Wie crosscompiler verwenden (statisches openvpn binary erstellen)

anonymus

Neuer User
Mitglied seit
31 Dez 2006
Beiträge
2
Punkte für Reaktionen
0
Punkte
0
Hallo liebes Forum,

vielleicht könnt ihr mir helfen, ein statisch gelinktes openvpn Binary für meine
Fritzbox (7320 = 1&1 Homeserver) zu kompilieren.
Bisher hatte ich eine alte Fritzbox mit 2.4er Kernel. Irgendwo im Internet hatte
ich ein CD-Image gefunden (ScratchboxMultiCpu-2.3.iso, Link weiß ich leider nicht mehr),
welches ein Linux gestartet hat. Darin war eine Toolchain enthalten, mit der ich Programme (z. B. openssl, lzo, openvpn)
für die Box kompilieren konnte. Das gab ein statisches Binary und lief direkt ohne Firmwaremodifikationen
(Kommandozeilenaufrufe siehe unten).

Mit der neuen Box läuft das natürlich nicht mehr, bisher sind all meine Versuche gescheitert:

1) http://www.wehavemorefun.de/fritzbox/index.php/Cross-Compile_Toolchain
Ergebnis: ich kann ein statische "hello world" programm kompilieren welches auf der FB läuft.
Aufgrund unzureichender Linuxkenntnisse weiß ich jetzt aber nicht, wie ich das "configure" für
die o. g. Programme aufrufen soll, damit dieser Crosscompiler verwendet wird.

2) Habe es analog zu http://www.ip-phone-forum.de/showthread.php?t=217453&page=1 versucht
Ergebnis: hat nicht funktioniert (Fehler war glaube ich, dass kein Compiler gefunden wurde)

3) http://freetz.org/wiki/help/howtos/development/compile_own_progs#EigeneProgrammekompilieren
Das klingt eigentlich vielversprechend, als ich openvpn kompilieren wollte,
gab es einen Fehler, irgendwas mit ungültige Konfiguration.
Hier steht auch noch was: http://freetz.org/wiki/help/howtos/development/create_cross-compiler_toolchain#Cross-CompilerToolchainerstellen
allerdings finde ich die angegebenen Menüs nicht in meinem Freetz (freetz-stable-1.2)

Mir würde es schon helfen, wenn ich wüsste, welchen der Punkte ich weiterverfolgen muss.
1) scheint vielversprechend, da schon mal was lauffähiges rausgekommen ist
2+3) sind allerdings ähnlich zu den aufrufen unter "Scratchbox"


Danke und viele Grüße,
Martin

PS: bisher habe ich mein openvpn für die alte Box so erstellt:

openssl:
./config
make
make install

lzo:
LDFLAGS=-static ./configure --build=i386-linux-gnu --host=mipsel-linux-uclibc --target=mipsel-linux-uclibc
make
make install

openvpn:
sslLib=/usr/local/ssl/lib
sslInc=/usr/local/ssl/include
lzoLib=/usr/local/lib
lzoInc=/usr/local/include
LDFLAGS=-static ./configure --build=i386-linux-gnu --host=mipsel-linux-uclibc --target=mipsel-linux-uclibc --with-ssl-headers=$sslInc --with-ssl-lib=$sslLib --with-lzo-headers=$lzoInc --with-lzo-lib=$lzoLib
make

=> Fertig war mein schönes openvpn-Binary, lauffähig ohne FB-Modifikationen
 

RalfFriedl

IPPF-Urgestein
Mitglied seit
22 Apr 2007
Beiträge
12,343
Punkte für Reaktionen
1
Punkte
0
Wenn Du hier schon bei Freetz fragst, kannst Du natürlich auch Freetz verwenden, um OpenVPN zu erstellen, und es auch auf der original Firmware laufen lassen.

Wenn es den Fehler "irgendwas mit ungültige Konfiguration" und nichts konkreteres gab, dann ist das Problem wohl nicht wichtig genug.
 

anonymus

Neuer User
Mitglied seit
31 Dez 2006
Beiträge
2
Punkte für Reaktionen
0
Punkte
0
Hallo,

hab deine Anmerkung zu Punkt 3 mal als "Wink mit dem Zaunpfahl" aufgefasst.
Habe jetzt ein lauffähiges Binary (zumindest kann ich es auf der FB starten
und es erscheint die normale openvpn-Hilfeausgabe)

Falls es interessiert (freetz-stable-1.2):
make menuconfig
->Advanced options->Shared libraries->Crypto & SSL->OpenSSL cryptographic library
->Advanced options->Shared libraries->Crypto & SSL->OpenSSL SSL/TLS library
->Advanced options->Shared libraries->Data compression-> LZO
->Advanced options->Shared libraries->Data compression-> Zlib
make

dann Opvenvpn runterladen und entpacken
Erstellen mit
export PATH=/home/freetz/freetz-stable-1.2/toolchain/target/bin:$PATH
LDFLAGS=-static ./configure --build=i386-linux-gnu --target=mips-linux --host=mips-linux # mips, nicht mipsel!!
make

=> jetzt gibt's eine Date "openvpn", die kann man auf die FB kopieren

FRAGE:
wie kann ich LZO selber übersetzen?
Wenn ich den configure-Aufruf oben auf LZO loslasse funktioniert das noch, aber bei "make" gibt es einen Linkerfehler: In function '_lzo_config_check': .../lzo-2.06/src/lzo_init.c:113: undefined reference to '__clzsi2'
Was fehlt mir hier? Scheint irgendwas vom compiler zu sein (https://llvm.org/svn/llvm-project/compiler-rt/trunk/lib/clzsi2.c)
 

RalfFriedl

IPPF-Urgestein
Mitglied seit
22 Apr 2007
Beiträge
12,343
Punkte für Reaktionen
1
Punkte
0
Du solltest die CFLAGS verwenden, die Freetz auch verwendet. Bei der 7320 kannst Du -march=24kc verwenden, -march=4kc sollte mit allen Boxen funktionieren.

Das mips ohne el hast Du schon verwendet, als Du das "hello world" Programm erstellt hast, sonst wäre es nicht auf der Box gelaufen.
 

MaxMuster

IPPF-Promi
Mitglied seit
1 Feb 2005
Beiträge
6,932
Punkte für Reaktionen
1
Punkte
36
Moin, wenn du sowieso freetz verwendest, ist die "simpel-Methode", ein statisches Binary zu bekommen:
Wähle das Paket "OpenVPN", je nach Bedarf mit oder ohne lzo (das wählt dann automatisch SSL und bei Bedarf LZO), und wähle auch "statisches Linken" (oder "static Binary", weiß ich gerade nicht).
Nach einem "make openvpn-precompiled" findest du das fertige und komplette Binary als "packages/target<deine HW unduclib>/openvpn-<Version>/root/usr/sbin/openvpn".
 
3CX

Statistik des Forums

Themen
235,885
Beiträge
2,067,232
Mitglieder
356,872
Neuestes Mitglied
Machsgut