2013-05-13 21 views
0

我的版本無法鏈接,可能是因爲它試圖鏈接錯誤版本的libaries(即libssl)。 makefile的LIBS指令指定了-lssl,這個不夠明確:我的系統中有很多這些(各種系統SDK +新下載的版本)。make程序使用哪些庫?

我的一般問題是,是否有一個詳細的選項讓打印用於鏈接的庫的顯式路徑?

Gil。

回答

0

要詳細查看鏈接步驟,您通常會將「詳細」選項傳遞給編譯器或鏈接器。你在用什麼系統?如果是gcc,則將-v添加到編譯命令中。這將產生像

$ gcc -v hello.c 
Using built-in specs. 
Target: i386-redhat-linux 
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --disable-plugin --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --with-cpu=generic --host=i386-redhat-linux 
Thread model: posix 
gcc version 4.1.2 20080704 (Red Hat 4.1.2-50) 
/usr/libexec/gcc/i386-redhat-linux/4.1.2/cc1 -quiet -v hello.c -quiet -dumpbase hello.c -mtune=generic -auxbase hello -version -o /tmp/ccAtBXVy.s 
ignoring nonexistent directory "/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../i386-redhat-linux/include" 
#include "..." search starts here: 
#include <...> search starts here: 
/usr/local/include 
/usr/lib/gcc/i386-redhat-linux/4.1.2/include 
/usr/include 
End of search list. 
GNU C version 4.1.2 20080704 (Red Hat 4.1.2-50) (i386-redhat-linux) 
     compiled by GNU C version 4.1.2 20080704 (Red Hat 4.1.2-50). 
GGC heuristics: --param ggc-min-expand=81 --param ggc-min-heapsize=95810 
Compiler executable checksum: d8d95095eb3c93dae4bed2137d559f95 
as -V -Qy -o /tmp/ccDL1N2O.o /tmp/ccAtBXVy.s 
GNU assembler version 2.17.50.0.6-14.el5 (i386-redhat-linux) using BFD version 2.17.50.0.6-14.el5 20061020 
/usr/libexec/gcc/i386-redhat-linux/4.1.2/collect2 --eh-frame-hdr -m elf_i386 --hash-style=gnu -dynamic-linker /lib/ld-linux.so.2 /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crt1.o /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crti.o /usr/lib/gcc/i386-redhat-linux/4.1.2/crtbegin.o -L/usr/lib/gcc/i386-redhat-linux/4.1.2 -L/usr/lib/gcc/i386-redhat-linux/4.1.2 -L/usr/lib/gcc/i386-redhat-linux/4.1.2/../../.. /tmp/ccDL1N2O.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/i386-redhat-linux/4.1.2/crtend.o /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crtn.o 

哪裏最後一行是鏈接命令的所有榮耀。 -L選項指定依次搜索-l給出的庫的目錄。

+0

您的鏈接器命令行指定-lgcc_s,但您在此處放置的輸出不顯示該庫的完整路徑。這正是我所錯過的。 – 2013-05-13 13:52:56

+0

在我的情況下,我確實看到很多-L選項,並且這個庫可能在其中的任何一個。我只想知道鏈接器試圖鏈接哪個鏈接。 – 2013-05-13 21:33:08

+0

按照順序在'-L'目錄中查找第一個。 – Jens 2013-05-14 06:52:37

相關問題