symbol lookup error


環境:redhat enterprise linux 5 (server version) 

項目中的lib3p目錄下放置了sqlite共享庫libsqlite3.so

cmake文件已經指定了lib3p路徑

運行項目生成的可執行文件時報錯:

./bin/test-slfdb_shell: symbol lookup error: /home/liangxx/sldb/build/sldb/lib/libsldb.so.1: undefined symbol: sqlite3_backup_init

百度到的結果是可執行文件鏈接的共享庫可能不正確,也就是說鏈接到的不是lib3p下的libsqlite3.so,而是/usr/lib下的舊版本libsqlite3.so,但是cmake已經正確指定了lib3p路徑,所以排除了這個可能。

那么到底是什么原因呢?從百度中學到一個命令ldd,這個命令可以查看可執行文件鏈接到的動態庫情況,於是我檢查了一下:

可以發現原來可執行文件鏈接的sqlite共享庫命名是libsqlite3.so.0,在lib3p下找不到libsqlite3.so.0命名的共享庫,所以轉向默認的路徑(/usr/lib)去查找,於是就連接到系統自帶的舊版本sqlite共享庫。

解決方法很簡單,進入到lib3p文件夾下,執行軟連接命令生成名字為libsqlite3.so.0的文件:

重新運行,木有問題了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM