簡體   English   中英

是否有自動程序來查找C ++鏈接器錯誤?

[英]Is there an automated program to find C++ linker errors?

我正在使用GCC編譯器在具有C ++的Linux環境中工作。

我目前正在修改和升級大量現有的代碼。 作為此過程的一部分,有必要在不同位置的整個代碼中添加大量小引用,以將事物鏈接在一起,並添加幾個新的外部代碼庫。 Makefile的結構也很大且很復雜,鏈接到configure.ac文件以處理構建過程。

在開始構建過程后,所有內容都可以毫無問題地進行編譯,但是在嘗試使用我們創建的新添加的自定義代碼庫時,會出現可怕的鏈接器錯誤。 現在,我們已經用細齒梳完成了大量代碼,查找拼寫不匹配,檢查了所有庫都包含在構建過​​程中的順序,並檢查了創建的.o文件是否包含我們使用轉儲所需要的文件,以及一切都應有的狀態。 我們還分別測試了該庫,問題肯定不存在於此。

簡而言之,我們已經嘗試了在這些情況下通常應執行的大多數操作。

是否有C ++工具可以自動檢測鏈接器錯誤,類似於cppcheck或splint(我們都無濟於事),在這里可以提供幫助嗎?

不知道您的平台,但是我花了一段時間解決gcc中的鏈接器問題,直到我意識到靜態庫( .a )鏈接需要特定的順序,鏈接gcc object.o first.a second.a不是gcc object.o second.a first.a並不相同。 gcc object.o second.a first.a

FWIW(不多)我嘗試使用另一個鏈接程序來解決此類問題,因為我可以訪問幾個不同的平台。 如果可以使用其他鏈接器,則可以找到以下兩者之一:

a)程序鏈接,將您的問題從“為什么不鏈接?”轉變為 到“鏈接器和鏈接之間有什么區別?” 這並不是向前邁出的一步,但有時會一步到一邊,從不同的角度來看待解決方案;

要么

b)它無法鏈接,在這種情況下,另一個鏈接器可能會提供有關失敗原因的更多有用信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM