[英]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
這顯示了在我的系統上為-lglut
和lcurl
庫找到的庫。 可以在該路徑中找到這些庫,因為在我的系統上,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.