使用GCC編譯動態鏈接庫的項目時,在其他目錄下執行很可以出現找不到動態鏈接庫的問題。 這種情況多發生在動態鏈接庫是自己開發的情況下,原因就是程序運行時找不到去何處加載動態鏈接庫。 可能會說在編譯時指定了鏈接的目錄啊!編譯時指定的 -L的目錄,只是在程序鏈接成可執行文件時使用的。程序執行 ...
gcc編譯鏈接動態庫時,很有可能編譯通過,但是執行時,找不到動態鏈接庫,那是 因為 L選項指定的路徑只在編譯時有效,編譯出來的可執行文件不知道 L選項后面的值, 當然找不到。可以用ldd lt your execute gt 看看是不有 not found 在你鏈接的庫后面, 解決方法是通過 Wl,rpath lt your lib dir gt ,使得execute記住鏈接庫的位置 參考鏈接 h ...
2012-04-27 19:55 1 19620 推薦指數:
使用GCC編譯動態鏈接庫的項目時,在其他目錄下執行很可以出現找不到動態鏈接庫的問題。 這種情況多發生在動態鏈接庫是自己開發的情況下,原因就是程序運行時找不到去何處加載動態鏈接庫。 可能會說在編譯時指定了鏈接的目錄啊!編譯時指定的 -L的目錄,只是在程序鏈接成可執行文件時使用的。程序執行 ...
現要在目錄 mainDir 下編譯庫libmain.so, 但是其 ---依賴於---> libsub.so,sub.so在目錄 mainDir / subDir 下,且subDir不在LD_LIBRARY_PATH以及環境變量中。 現有如下執行: 1. gcc -share -o ...
其中,有兩個單獨的部分-Wl和-rpath組成。 -Wl 這個是gcc的參數,表示編譯器將后面的參數傳遞給鏈接器ld。 -rpath 大體就以下這幾個意思: 1. 添加一個文件夾作為運行時庫的搜索路徑。在將ELF可執行文件與共享對象鏈接時使用此選項; 2. 在鏈接時 ...
寫下給自己備忘,在一次使用GCC的過程中發現了原來傳遞給鏈接器ld可以同時使用Xlinker和Wl兩種命令,這兩個命令都可以正確傳遞給ld作為使用,現在總結下兩者的區別。 Xlinker后面跟的參數第一個是空格,而Wl后面跟的第一個字符是","。 對於傳遞“-assert ...
/ -Wl,-rpath=./ -o main 鏈接命令可使用g++ main.cpp libhel ...
默認情況下,GCC/G++鏈接時優先鏈接動態庫,如果沒有動態庫,則鏈接相應的靜態庫。同時,GCC/G++也提供了鏈接選項 -Wl,-Bstatic 和 -Wl,-Bdynamic 供用戶指定鏈接動態庫或者靜態庫。 -Wl,-Bstatic指示跟在后面的-lxxx選項鏈接的都是靜態庫,-Wl ...
轉載請注明出處,謝謝 https://www.cnblogs.com/tianknight/p/10648021.html 目錄 前言 源碼准備 源碼內容 ...
-Wl選項告訴編譯器將后面的參數傳遞給鏈接器。 -soname則指定了動態庫的soname(簡單共享名,Short for shared object name) soname的關鍵功能是它提供了兼容性的標准: 當要升級系統中的一個庫時,並且新庫的soname和老庫的soname一樣 ...