Estou tentando construir o cliente VPN para meu NAS, que é uma CPU ARMv5 com o Linux 2.6:
Linux OSS117 2.6.22.18 #15 Wed May 25 15:23:11 CST 2011 armv5tejl GNU/Linux
A máquina de compilação é um 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
Basicamente, segui estas etapas (instruções de compilação para openssl, libzo e openvpn) que funcionam perfeitamente bem, mas as programa se recusa a executar no host de destino porque o kernel é muito antigo:
bicou@OSS117:~$ ./openvpn
FATAL: kernel too old
Aborted
Eu tenho então, de acordo com esta resposta , recuperado glibc e compilado com --enable-kernel=2.6.22
, que funcionou como um encanto .
Eu modifiquei o makefile do OpenVPN usando estas instruções (adaptei-me para usar o compilador cruzado GCC em vez do sistema um ao pesquisar por caminhos de arquivo, e funciona porque aponta para /usr/lib/gcc-cross
em vez do padrão /usr/lib/gcc
) mas agora a compilação falha com isso:
/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
Então eu achei que tinha que recompilar o zo e o openssl com o glibc dedicado, mas isso não funciona (a compilação funcionou).
Eu sinto que estou muito perto de alcançar o que quero, mas estou preso no passo do link-com-glibc.
Aqui estão as versões que usei: