Weils was anderes ist, mal als neuer Beitrag:
Also, so hab ichs gemacht:
im "make menuconfig" die "richtige" Box ausgewählt und diese Libraries gewählt
uclibc/libubacktrace (fürs statische Bauen; dafür muss bei der Toolchain die uClibc Version 0.9.33.2 gewählt werden !) libevent, openssl, zlib, readline und libconfig.
(kann man bis auf ubacktarce auch "von Hand" so bauen:
make libevent-precompiled
make openssl-precompiled
make zlib-precompiled
make readline-precompiled
make libconfig-precompiled
)
Dann muss das configure den Pfad zu den Libraries bekommen, zlib braucht den Pfad nochmal.
Damit funktioniert schonmal das configure.
Code:
#Pfad zum Freetz-Ordner
FREETZ=/run/shm/trunk
PATH="$FREETZ/toolchain/target/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" CC="$FREETZ/toolchain/target/bin/mipsel-linux-uclibc-gcc" CFLAGS="-march=4kc -mtune=4kc -msoft-float -Os -pipe -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" LDFLAGS="-L$FREETZ/toolchain/target/usr/lib/" PKG_CONFIG_PATH="$FREETZ/toolchain/target/bin/../lib/pkgconfig" PKG_CONFIG_LIBDIR="$FREETZ/toolchain//target/bin/../lib/pkgconfig" GLOBAL_LIBDIR=$FREETZ/toolchain/target/usr/lib ./configure ac_cv_func_malloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes --target=mipsel-linux --host=mipsel-linux --build=x86_64-pc-linux-gnu --with-zlib=$FREETZ/toolchain/target/usr/ --disable-liblua --disable-python --disable-json
Make hat dann das Problem, dass Source-Files erst während des "make" erzeugt werden, das läuft natürlich schief, wenn die Binaries für die Fritzbox gebaut sind auf dem PC ausgeführt werden. Eine Unterscheidung für "HOSTCC" oder sowas hab ich nicht gefunden.
Ich hab dann einen "Quick-and-Dirty" Workaround gemacht, und das Programm zusätzlich direkt auf dem Host übersetzt und dann beim Fehler während des "make"-Laufes die Binaries vom Host genommen (erst "cp ../tg.HOST/bin/tl-parser bin/", dann später "cp ../tg.HOST/bin/generate bin/").
Zuletz habe ich dann noch (eben falls dirty, ich weiß ;-)) das Programm von Hand nochmal statisch gelinkt, damit ich
es hier ohne Libs anfügen kann.
Dazu musste ich dem letzten Compiler-Aufruf zum Linken neben "-static" noch die Libraries "ubacktrace" und "ncurses"zusätzlich mit angeben (also "-static" und "-lncurses -lubacktrace"):
Code:
$FREETZ/toolchain/target/bin/mipsel-linux-uclibc-gcc objs/main.o objs/loop.o objs/interface.o objs/lua-tg.o objs/json-tg.o objs/python-tg.o objs/python-types.o libs/libtgl.a -L/$FREETZ/toolchain/target/usr/lib/ -L/usr/local/lib -L$FREETZ/toolchain/target/usr/lib -L$FREETZ/toolchain/target/usr/lib -L$FREETZ/toolchain/build/mipsel_gcc-4.6.4_uClibc-0.9.33.2/mipsel-linux-uclibc/usr/lib -static -rdynamic -ggdb -levent -lconfig -lz -levent -lm -lreadline -lssl -lcrypto -ldl -ldl -lpthread -lutil -lncurses -lubacktrace -o bin/telegram-cli
Danach noch wenigstens etwas kleiner machen und "strippen":
Code:
$FREETZ/toolchain/target/bin/mipsel-linux-uclibc-strip --remove-section={.comment,.note,.pdr} --remove-section={.comment,.note,.pdr} bin/telegram-cli