0
我想爲必須替換另一個庫的嵌入式系統構建共享庫。我試圖簡單地用相同的符號來構建一個lib。當我將原始庫與mylib進行比較時,會有細微差別。因此,可執行文件在我的假lib中找不到這個符號。使用與另一個lib相同的符號構建一個庫
假lib目錄下:
0000000000000c90 g DF .text 0000000000000098 Base dbus_pending_call_unref(DBusPendingCall*)
原始的lib:
0000000000020430 g DF .text 0000000000000070 Base dbus_pending_call_unref
正如你可以看到函數的參數是不是在原來的LIB可見。可能這是爲什麼可執行文件找不到符號的原因?我如何使符號中的參數對我的假lib不可見?
我用objdump -TC來查看符號,並在我的src文件中使用了CMake導出頭來導出符號。
假設你正在試圖在不重新編譯使用共享庫的原始庫的情況下執行此操作,因此當您嘗試使用假lib運行二進制文件時,您會收到ldd錯誤或類似錯誤。你得到的錯誤究竟是什麼? – Smeeheey
它知道參數類型。建議你使用C++並忘記'extern「C」'。 –
我得到的錯誤是:符號查找錯誤:/usr/lib64/libtest.so:undefined symbol:dbus_pending_call_unref – Paul