沒有載入動態庫導致的error: symbol lookup error: undefined symbol
阿新 • • 發佈:2018-11-19
做了一個瀏覽器外掛,需要編譯為 abcPlugins.so , 這個.so需要呼叫另外一個業務庫 defLib.so裡面的函式。
把abcPlugins.so替換到目標板上,瀏覽器程序啟動不起來。
1. 查詢瀏覽器程序啟動過程錯誤
1)export LD_DEBUG=files
2)啟動瀏覽器程序指令碼來啟動瀏覽器程序
從log中看到 這個錯誤 error: symbol lookup error: undefined symbol
defLib.so庫提供的一個函式 出現undefined symbol
2. 檢視abcPlugins.so defLib.so是否包含這個函式名
1)nm -D abcPlugins.so | less
這兩個庫中都包含這個函式名
3)檢視abcPlugins.so是否連結了defLib.so
ldd abcPlugins.so (出現了 not a dynamic executable ldd 命令不好使)
換readelf試試
readelf -d abcPlugins.so
從其中看到確實沒有依賴defLib.so
4)在Makefile中把defLib.so 加上
readelf -d abcPlugins.so 就看到依賴defLib.so