1

Я пытаюсь создать 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

0