Juhu, Fehler gefunden, Problem gelöst, Asterisk rennt.
Das Sorgenkind war mal wieder die Kombination libcrypto & libssl.
Beim statischen Build hat mir der Linker in meiner Build-Umgebung endlich brauchbare Fehlermeldungen liefern können. Vermutlich war das auch die Ursache für die SegFaults auf der FritzBox, nur dass mit dort nicht die passenden Debug-Tools zur Verfügung stehen.
Ich habe den Asterisk 1.6 nun voll statisch kompiliert, ohne SSL und CURL. Das Binary ist nun über 40 MB groß - aber es funktioniert.
Die gesamte Asterisk-Installation liegt sowieso auf einem an der FritzBox angeschlossenen GB USB-Stick, da ist mir die Dateigröße des Binaries eigentlich relativ egal.
Falls sich jemand für die Fehlermeldung interessiert, das spuckt mit der Linker ganz am Ende aus, wenn er versucht die libcrypto statisch in das Asterisk-Binary zu linken:
Code:
[LD] abstract_jb.o acl.o adsistub.o aescrypt.o aeskey.o aestab.o alaw.o app.o ast_expr2.o ast_expr2f.o asterisk.o astfd.o astmm.o astobj2.o audiohook.o autoservice.o bridging.o callerid.o cdr.o channel.o chanvars.o cli.o config.o cryptostub.o datastore.o db.o devicestate.o dial.o dns.o dnsmgr.o dsp.o enum.o event.o features.o file.o fixedjitterbuf.o frame.o fskmodem.o global_datastores.o hashtab.o heap.o http.o image.o indications.o io.o jitterbuf.o loader.o logger.o manager.o md5.o netsock.o pbx.o plc.o poll.o privacy.o rtp.o say.o sched.o sha1.o slinfactory.o srv.o ssl.o stdtime/localtime.o strcompat.o strings.o taskprocessor.o tcptls.o tdd.o term.o threadstorage.o timing.o translate.o udptl.o ulaw.o utils.o version.o xml.o xmldoc.o editline/libedit.a db1-ast/libdb1.a ../apps/modules.link ../bridges/modules.link ../cdr/modules.link ../channels/modules.link ../codecs/modules.link ../formats/modules.link ../funcs/modules.link ../pbx/modules.link ../res/modules.link -> asterisk
/usr/src/freetz/freetz-trunk/toolchain/build/gcc-4.2.4-uClibc-0.9.29/mipsel-linux-uclibc/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_func':
dso_dlfcn.c:(.text+0x3f0): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x428): undefined reference to `dlerror'
/usr/src/freetz/freetz-trunk/toolchain/build/gcc-4.2.4-uClibc-0.9.29/mipsel-linux-uclibc/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_var':
dso_dlfcn.c:(.text+0x548): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x584): undefined reference to `dlerror'
/usr/src/freetz/freetz-trunk/toolchain/build/gcc-4.2.4-uClibc-0.9.29/mipsel-linux-uclibc/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_unload':
dso_dlfcn.c:(.text+0x688): undefined reference to `dlclose'
/usr/src/freetz/freetz-trunk/toolchain/build/gcc-4.2.4-uClibc-0.9.29/mipsel-linux-uclibc/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_load':
dso_dlfcn.c:(.text+0x714): undefined reference to `dlopen'
dso_dlfcn.c:(.text+0x75c): undefined reference to `dlerror'
dso_dlfcn.c:(.text+0x7d0): undefined reference to `dlclose'
collect2: ld returned 1 exit status
make[1]: *** [asterisk] Error 1
make: *** [main] Error 2
SSL wäre zwar ein nettes Gimmick, benötige ich auf meinem Asterisk aber auch wieder nicht ganz dringend. Immerhin läuft jetzt wieder eine aktuelle Asterisk-Version, und das ist die Hauptsache. Da sie statisch kompiliert ist, dürfte sie wohl auch die ein oder andere Freetz bzw. uclibc o.ä. Änderung in der Zukunft überstehen.