❶ GCC/G++選項 -Wl,-rpath=
在使用GCC/G++進行程序編譯時,可以通過-L選項指定鏈接庫的路徑。然而,該選項僅在編譯階段生效,運行時程序並不會記住鏈接庫的具體位置,導致動態載入時可能出現找不到動態庫的錯誤。
例如,當執行命令提示"error while loading shared libraries: XXX.so: cannot open shared object file: No such file or directory"時,表明程序在初始化階段無法找到相關動態庫。
為解決此問題,可以在鏈接階段使用-Wl,-rpath=選項添加庫路徑。該命令將指定路徑寫入可執行文件或庫中,從而在運行時程序可以直接讀取到。
以"/home/hello/lib"為例,運行參數-Wl,-rpath=/home/hello/lib將使程序在運行時首先搜索此目錄下的庫文件,隨後按照"/usr/lib"/"/usr/local/lib"的順序查找。可以通過ldd ./你的運行文件命令查看庫的連接情況,確保所有庫均成功連接。
總結,通過在編譯階段的tasks.json文件中設置args參數添加-Wl,-rpath=路徑,即可在運行時有效解決庫路徑問題,確保程序順利執行。