G 編譯 動態鏈結庫的鏈結與使用

2021-05-25 12:56:40 字數 474 閱讀 4524

今天在寫v8的demo時出現了乙個問題,根據v8 document的命令:

g++ -iinclude hello_world.cpp -o hello_world libv8.a -lpthread

無法編譯和鏈結成功,試了半天,搞清楚了些東西。

編譯時-i:告訴編譯器在指定資料夾搜尋標頭檔案

-l***:會解析成lib***.so

編譯後ldd ***:檢視可執行檔案的動態檔案依賴

ldconfig:可檢視當前環境可找到的庫檔案

為讓編譯後的檔案能找到動態庫檔案,有如下方法可以做到:

1.將庫檔案lib***.so拷貝到/usr/lib 或 /lib 或 /usr/local/lib下,預設情況,系統從這幾個地方尋找庫檔案。 2.

3.將庫檔案的路徑新增到/etc/ld.so.conf.d/中去,然後執行ldconfig。

4.編譯時指定動態庫的絕對路徑。

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

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

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

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

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

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