Guardando a this question e this question Posso vedere che per backtrace_symbols()
funzionare, si deve compilare con il flag -rdynamic
.backtrace_symbols() con entrambi -static e -rdynamic
ho provato in un programma di test e funziona, ma sto scrivendo un programma che è anche compilato con -static
e this page dice che backtrace_symbols()
non funziona quando -static
viene passato al compilatore/linker.
C'è qualche soluzione rapida a questo oppure non avrò mai una funzione di lettura incrociata leggibile dall'uomo nel mio programma collegato in modo statico?
Sì, '-static' è obbligatorio nel mio programma. Ho anche provato con 'libunwind' ma i miei programmi di esempio non si collegano sia su Ubuntu 12.04 x86 che x86_64. Sono sempre ottenere gli errori di collegamento come ad esempio: 'undefined reference to _Ux86_init_local' ' undefined reference to _Ux86_get_reg' 'undefined reference to _Ux86_get_proc_name' ' undefined reference to _Ux86_step' sia con binario libunwind Ubuntu e ultima auto-compilato libunwind scaricato da [qui] (http://download.savannah.gnu.org/releases/libunwind/). – Avio
@ Avvio Ho menzionato 'libdwarf', non' libunwind'. Non ho avuto problemi nel collegamento con 'libunwind' – qrdl
Proverò' libdwarf' il prima possibile. Stavo solo citando 'libunwind' perché potrebbe essere un'alternativa interessante senza alcun requisito speciale. Quale architettura/distribuzione hai usato quando hai collegato correttamente a 'libunwind'? – Avio