簡體   English   中英

Linux-查找g ++ lib的路徑

[英]Linux - find the path of g++ lib

我安裝了這兩個庫:glut和curl。

sudo apt-get install libcurl4-gnutls-dev
sudo apt-get install freeglut3-dev

當我必須編譯程序時,我使用:

g++ -o executable file11.cpp file2.cpp -lglut -lcurl

而且有效!

我怎么知道鏈接器在哪里搜索“ -lglut”或“ -lcurl”?

“ -lsomething”對應於一條路徑,我如何找出?

它檢查/lib/usr/lib以及傳遞給-L所有路徑。

鏈接器將在-L選項指定的目錄和標准系統目錄(通常是/lib/usr/lib查找。 盡管您沒有使用任何-L選項,但除非您使用-nostdlib否則GCC通常會將一些傳遞給鏈接器,以便它可以找到GCC自己的庫(例如C ++標准庫)。 GCC還將為LIBRARY_PATH環境變量的內容添加-L選項。

要查看GCC傳遞給鏈接器的選項,您可以使用-v進行編譯(表示詳細信息),並查看鏈接器使用的庫,可以將-Wl,--trace傳遞給GCC,這會使它將--trace傳遞給鏈接器,使其輸出類似:

/usr/bin/ld: mode elf_x86_64
/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../lib64/crt1.o
/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../lib64/crti.o
/usr/lib/gcc/x86_64-redhat-linux/4.7.2/crtbegin.o
/tmp/ccJHrbSx.o
-lglut (/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../lib64/libglut.so)
-lcurl (/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../lib64/libcurl.so)
-lgcc_s (/usr/lib/gcc/x86_64-redhat-linux/4.7.2/libgcc_s.so)
/lib64/libc.so.6
(/usr/lib64/libc_nonshared.a)elf-init.oS
/lib64/ld-linux-x86-64.so.2
-lgcc_s (/usr/lib/gcc/x86_64-redhat-linux/4.7.2/libgcc_s.so)
/usr/lib/gcc/x86_64-redhat-linux/4.7.2/crtend.o
/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../lib64/crtn.o

這顯示了在我的系統上為-lglutlcurl庫找到的庫。 可以在該路徑中找到這些庫,因為在我的系統上,GCC將-L/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../lib64傳遞給了鏈接器(如下所示)通過-v編譯)

您可以使用readlink規范化這些路徑

$ readlink -f /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../lib64/
/usr/lib64/

http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html看來,它只是將字符串轉換為文件名,並檢查其正常位置。

嘗試

ldd /path/to/your/executable

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM