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