Ho due versioni di GCC installate sul mio sistema 4.6.2 e 4.7.0. Sto eseguendo Fedora Core 16.GCC Non collega le librerie corrette
4.6.2 è installato in /usr/bin
e 4.7.0 è installato in /home/nerozehl/local/bin
. Anche le librerie e il runtime per C++ sono compilati e installati in /home/nerozehl/local/lib
e /home/nerozehl/local/lib64
.
Ho anche installato due versioni di Boost, con librerie in /usr/lib64
e /home/nerozehl/local/lib
. (Boost 1.47.0 e 1.49.0, rispettivamente)
Il problema che sto avendo è che g ++/ld si collegano alle librerie predefinite, e non a quelle più recenti in /home/nerozehl/local
. Sto usando configure
per generare Makefile, e chiamo in questo modo:
CXX=g++47 CXXFLAGS="-g -O0 -pg" LDFLAGS="-L/home/nerozehl/local/lib" ./configure --prefix=/home/nerozehl/local
Dove g++47
risiede nel /home/nerozehl/local/bin
(nel mio $PATH
).
Quando compilo, è tutto a posto, e vengono utilizzati gli header più recenti, ma quando posso controllare quello che era collegato contro:
ldd source/noes
linux-vdso.so.1 => (0x00007fffebfff000)
libboost_filesystem-mt.so.1.47.0 => /usr/lib64/libboost_filesystem-mt.so.1.47.0 (0x0000003c6a800000)
libboost_system-mt.so.1.47.0 => /usr/lib64/libboost_system-mt.so.1.47.0 (0x0000003c6a400000)
libboost_program_options-mt.so.1.47.0 => /usr/lib64/libboost_program_options-mt.so.1.47.0 (0x0000003c6ac00000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003c6dc00000)
libm.so.6 => /lib64/libm.so.6 (0x0000003c68c00000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003c69c00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003c68800000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003c69000000)
librt.so.1 => /lib64/librt.so.1 (0x0000003c69800000)
/lib64/ld-linux-x86-64.so.2 (0x0000003c68400000)
Per la vita di me non riesco a capire come forzare g ++/ld/configure per usare le mie nuove librerie. Qualsiasi aiuto sarebbe apprezzato.
+1 per l'utilizzo di ldd – pyCthon
Si dovrebbe verificare con l'opzione '-V' come l'attuale percorso di ricerca della libreria assomiglia: durante il collegamento g ++ mostrerà quali directory sarà la ricerca e in quale ordine. Per evitare il problema prova a passare il percorso desiderato usando l'opzione '-L'. La mia ipotesi è che cerca i percorsi standard prima del percorso locale nelle directory aggiuntive. –
Sto usando -L/home/nerozehl/local/lib – nerozehl