1. 程式人生 > >沒有載入動態庫導致的error: symbol lookup error: undefined symbol

沒有載入動態庫導致的error: symbol lookup error: undefined symbol

做了一個瀏覽器外掛,需要編譯為 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