您好,登錄后才能下訂單哦!
在運行可執行程序時,假定 可執行程序 proc
proc 依賴動態連接庫 libtest.so
libtest.so里面有 函數 func,
編譯沒錯,執行出錯
symbol lookup error:: undefined symbol: **func**
其可能原因是:連接的libtest.so不是最新的libtest.so,里面沒有 func.
而造成沒有 找到 最新libtest.so的原因 可能是 在libtest.so的搜索路徑上有個舊的庫
ps:
庫在 搜索時,-ltest 會先在某A目錄找.so,如果有.so,查找停止,如果沒.so,在目錄A找.a,如果找到則停止,都沒有則 按照搜索路徑 找后續目錄B等.
-L./A -ltest_2 -L./B -ltest -ltest.so
這里假定 test_2.a/.so 是第三方提供的庫,依賴了test.so,且第三方提供了一個其依賴的test.so 版本。 則A目錄(libtest_2.so,libtest.so)
B目錄為自己編譯的版本的 libtest_3.so庫,其依賴 libtest.so 其自己提供了一個libtest.so
即B目錄為(libtest_3.so,libtest.so)
在查找路徑上 先找 A 目錄,再找B目錄,如果 A的test.so和B的test.so不兼容(B的比A的新),可能會出現
B中的test庫中符號沒找到的錯誤,
這是因為 實際找到的 是 A中的 test庫
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。