GCC動態鏈結庫顯示未定義的引用

2021-09-13 10:18:08 字數 316 閱讀 5797

今天用了gcc的動態庫鏈結,到最後一步編譯的時候一直顯示主函式對動態庫中的函式未定義的引用

如果你的檔案函式中有對動態鏈結庫中的符號依賴,在使用gcc編譯的時候一定要把檔案放在動態庫前面編譯。

e.g.

我的pro.c裡需要用到libhello.so這個動態庫中的函式,在使用gcc的時候要以如下順序編譯。(如果不使用-l引數的話不要忘記把libhello.so動態庫複製到/usr/lib中)

gcc pro.c lhello -o pro
生成可執行檔案後可以使用readelf -d 和 ldd 指令檢視其依賴

GCC 生成動態鏈結庫

linux 下動態鏈結庫 shared object file,共享物件檔案 的檔案字尾為.so,它是一種特殊的目標檔案 object file 可以在程式執行時被載入 鏈結 進來。使用動態鏈結庫的優點是 程式的可執行檔案更小,便於程式的模組化以及更新,同時,有效記憶體的使用效率更高。如果想建立乙個...

GCC 編譯使用動態鏈結庫

動態鏈結庫 1.建立動態鏈結庫 複製 如下 include void hello 用命令gcc shared hello.c o libhello.so編譯為動態庫。可以看到,當前目錄下多了乙個檔案libhello.so。2.再編輯乙個測試檔案test.c,內容如下 複製 如下 include in...

GCC 編譯使用動態鏈結庫和靜態鏈結庫

1 庫的分類 根據鏈結時期的不同,庫又有靜態庫和動態庫之分。靜態庫是在鏈結階段被鏈結的 好像是廢話,但事實就是這樣 所以生成的可執行檔案就不受庫的影響了,即使庫被刪除了,程式依然可以成功執行。有別於靜態庫,動態庫的鏈結是在程式執行的時候被鏈結的。所以,即使程式編譯完,庫仍須保留在系統上,以供程式執行...