linux編譯程式時指定動態庫路徑問題?

時間 2021-06-03 01:42:37

1樓:似景瞳

-L. 注意L後是個點,代表當前目錄,所以當前目錄被增加到所有-l引數的搜尋範圍裡。 你關於so檔案要不要用到的疑慮gcc不會考慮,但要總要能找到myhello這個你指定讓它鏈結的東西吧

補充:我又看一遍問題,你該不會還以為就算電腦裡沒有libmyhello.so程式應該也能編譯通過啊這個意思吧?

是的,可以搞出來個半成品。但是你告訴它了-lmyhello,-l可是實打實地要去找庫檔案的,不是隨心所欲的。

2樓:js li

目標檔案編譯完了只有相對位址,經過鏈結過程後才會分配實際的位址,這個過程不管是動靜態庫都是要參與啊,區別不過是靜態庫的各個段會根據鏈結指令碼的配置整合到最後生成的ELF可執行檔案中,面動態庫不需要而已。所以-L指定了鏈結時需要的動態庫的位置。編譯時也許只需要乙個名字(符號),但鏈結時可不是。

3樓:泥巴孩

定位乙個檔案,用的不僅僅是名字,還有它所在的目錄,假如你有兩個一樣名字的庫在不同目錄下,你又沒指定哪個目錄,鏈結器如何選擇

在Visual Studio開發c 程式時,怎樣使用和管理第三方的開源庫

洪春濤 必須vcpkg啊,M 官方出口 https pkg什麼boost啊,poco啊,protobuf之類全都有,想用啥用啥 San Cheung 不要怕麻煩,我用的開源庫一般都是純c原始碼,新建個靜態庫,原始碼導進,編譯OK,併入solution,一勞永逸 當初zlib,cximage,fftw...

請問在Linux下用GCC編譯Open GL時的命令列引數是什麼意思?

Birkee gcc中共享庫的命名為libname.so.major.minor lname 引數代表鏈結名字為name的庫,編譯時鏈結器 ld 在路徑中搜尋並鏈結名為 libname.so 庫檔案。 如果只編譯opengl,需要的make檔案引數為 lGL當然,得有個視窗管理,glut 或者 fr...

使用Qt開發應用程式時,使用MySQL資料庫還是使用Qt自帶的SQLite資料庫呢,用哪個會方便簡單?

資料庫,只要不用到特性和方言,基礎的sql區別都不大,上手難度也沒太大差別 選型取決於用途 如果是做產品的,mysql 相對好些 如果只是做玩具,sqlite 也不差 SQLite當然更簡單,更容易上手,MySQL你好歹還要安裝配置一下才可以用。Qt中還可以以 記憶體資料庫 的方式使用SQLite。...