溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

symbol lookup error:: undefined symbol:

發(fā)布時(shí)間:2020-05-29 17:09:33 來源:網(wǎng)絡(luò) 閱讀:12860 作者:qdqade 欄目:編程語言

在運(yùn)行可執(zhí)行程序時(shí),假定 可執(zhí)行程序 proc

proc 依賴動(dòng)態(tài)連接庫(kù) libtest.so 


libtest.so里面有 函數(shù) func,


編譯沒錯(cuò),執(zhí)行出錯(cuò)

symbol lookup error:: undefined symbol: **func**


其可能原因是:連接的libtest.so不是最新的libtest.so,里面沒有 func.


而造成沒有 找到 最新libtest.so的原因 可能是 在libtest.so的搜索路徑上有個(gè)舊的庫(kù)


ps:

庫(kù)在 搜索時(shí),-ltest 會(huì)先在某A目錄找.so,如果有.so,查找停止,如果沒.so,在目錄A找.a,如果找到則停止,都沒有則 按照搜索路徑 找后續(xù)目錄B等.


-L./A -ltest_2 -L./B -ltest -ltest.so 

這里假定 test_2.a/.so 是第三方提供的庫(kù),依賴了test.so,且第三方提供了一個(gè)其依賴的test.so 版本。 則A目錄(libtest_2.so,libtest.so)

B目錄為自己編譯的版本的 libtest_3.so庫(kù),其依賴 libtest.so 其自己提供了一個(gè)libtest.so

即B目錄為(libtest_3.so,libtest.so)


在查找路徑上 先找 A 目錄,再找B目錄,如果 A的test.so和B的test.so不兼容(B的比A的新),可能會(huì)出現(xiàn)

B中的test庫(kù)中符號(hào)沒找到的錯(cuò)誤,

這是因?yàn)?實(shí)際找到的 是 A中的 test庫(kù)






向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI