Я пытаюсь создать VPN-клиент для моего NAS, который представляет собой процессор ARMv5 с Linux 2.6:
Linux OSS117 2.6.22.18 #15 Wed May 25 15:23:11 CST 2011 armv5tejl GNU/Linux
Машиной компиляции является Debian 9 x86_64:
Linux dikkenek 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u1 (2016-09-03) x86_64 GNU/Linux
Я в основном выполнил следующие шаги (инструкции по компиляции для openssl, libzo и openvpn), которые работают отлично, но программа отказывается работать на целевом хосте, потому что ядро слишком старое:
bicou@OSS117:~$ ./openvpn
FATAL: kernel too old
Aborted
Затем, согласно этому ответу, я получил glibc и скомпилировал его с --enable-kernel=2.6.22
который работал как чудо .
Затем я изменил сборочный файл OpenVPN, используя эти инструкции (я приспособился использовать кросс-компилятор GCC вместо системного при поиске путей к файлам, и он работает, потому что он указывает на /usr/lib/gcc-cross
вместо default /usr/lib/gcc
), но теперь компиляция завершается неудачно:
/usr/lib/gcc-cross/arm-linux-gnueabi/6/../../../../arm-linux-gnueabi/bin/ld: /home/bicou/dns-325-cross/bin/lib/libcrypto.a(v3_utl.o): undefined reference to symbol '__isoc99_sscanf@@GLIBC_2.7'
//usr/arm-linux-gnueabi/lib/libc.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:562: recipe for target 'openvpn' failed
make: *** [openvpn] Error 1
Поэтому я решил, что мне нужно перекомпилировать zo и openssl с выделенным glibc, но это тоже не работает (хотя компиляция работала).
Я чувствую, что очень близок к достижению того, чего хочу, но я застрял на этапе link-with-glibc.
Вот версии, которые я использовал:
- Glibc-2,25
- LZO-2,09
- OpenSSL-1.0.2j
- OpenVPN-2.3.12