原文:linux 動態庫的符號沖突問題

最近,給同事定位了一個符號表的沖突問題,簡單記錄一下。 A代碼作為靜態鏈接庫,被包含進了B代碼,然后編譯成了動態鏈接庫,B.so A代碼同時作為靜態鏈接庫,被編譯進入了main的主代碼。 main函數調用B.so里面的函數,同時B.so里面的函數調用了A代碼,結果進程異常退出了。 查看符號表,發現調用的A代碼,其實運行的是直接編譯進入main主函數的代碼,而不是B.so里面包含的A代碼。 而且比較 ...

2017-12-04 09:07 0 1574 推薦指數:

查看詳情

解決動態符號沖突

一次debug遇到的疑惑 某天發現一個程序有點問題。祭上print大法,在關鍵的 lib_func() 函數里添加 print 調試信息,重新編譯運行。 期望 print 出的信息一點都沒有,但是程序確確實實又執行過了 libfunc() ,因為除了添加的調試 print 沒有執行 ...

Wed May 26 22:38:00 CST 2021 0 260
Linux環境下 動態so 中全局變量沖突問題

項目調試過程中遇到Linux環境下動態so中全局變量相互沖突問題問題具體描述如下: 單個進程 A運行時需要加載兩個動態B.so與C.so ,這兩個動態均鏈接了靜態D.a。靜態 D.a存在全局變量且只能初始化一次。進程A加載B.so 正常,加載C.so 提示D.a 初始化 ...

Thu Feb 27 23:04:00 CST 2020 0 1976
jQuery中 $ 符號沖突問題

jQuery中 $ 符號沖突問題是常見問題之一。 在jQuery中, $是jQuery的別名,為了書寫方便,我們更習慣用$('#id')這一類的方式來書寫代碼。當同一頁面引用了jQuery多個版本或者jQuery與某些其他js產生沖突,控制台就會 ...

Fri Nov 04 23:41:00 CST 2016 3 1230
linux命令查看文件鏈接的動態 各種符號

最直接的就用 ldd + 可執行文件: 可以看到可執行文件需要哪些動態,以及在當前環境下實際連接到的路徑。 除了ldd,還有一些其它工具: readelf 都可以看file 查看文件類型strings 查看目標文件里所有可打印的字符串,或者非文本文件的 loadable ...

Tue Apr 19 18:55:00 CST 2022 0 1236
linux上靜態動態的編譯和使用(附外部符號錯誤淺談)

主要參考博客gcc創建和使用靜態動態 對於熟悉windows的同學,linux上的靜態.a相當於win的.lib,動態.so相當於win的.dll. 首先簡要地解釋下這兩種函數的區別,參考《Linux程序設計》 1. 靜態也被稱為歸檔文件(archive,因此創建命令是ar ...

Thu Feb 02 06:19:00 CST 2017 0 4252
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM