Como compilar o OpenVPN para um kernel antigo

1

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:

  • glibc-2.25
  • lzo-2.09
  • openssl-1.0.2j
  • openvpn-2.3.12
por Benoit Duffez 02.07.2017 / 13:00

0 respostas