2012-04-26 55 views
3

我有兩個C++程序包A和B,其中A依賴於B.我想通過具有吞下B碼的最小部分要打破這種依賴關係,從而使B可以被拋出完全。合併兩個C++封裝

沒有人有我怎麼會簡介包A找出到底有類/功能中的任何意見,等我需要的B帶來的?

編輯: 我只是刪除軟件包B,並經過(很多)循環的編譯A,從B複製文件,相應地更新了Makefile.am。現在我很確定我已經臃腫的A包含了比需要更多的東西。我如何找到在執行程序/庫中從未使用過的A`代碼部分?

+4

這可能有點痛苦,但你總是可以刪除'B',重新編譯並查看你得到的錯誤消息:)然後從源代碼管理中恢復你實際需要的東西。一旦你這樣做了,作爲第二步,你可以將你保存的東西遷移到'A'。 – 2012-04-26 19:25:07

+0

我一直在做這個。是的,真的很痛苦。我把第一層丟失的文件拖回去,並重新編譯,這給了我所依賴的東西。某些第二層文件可能會被刪除,如果我剪掉了我實際上並不需要的第一層文件的一半。 – ajwood 2012-04-27 13:29:01

回答

0

也許objdump會給你一些有用的信息。在二進制文件(objdump -t)上使用它,它應該能夠顯示一些關於導入函數的有用信息。

1

我認爲有作用的三種可能的方式:

  1. 真的導入必要的東西:撤消你做了什麼,再做一遍,但這次不從B,而僅僅是拷貝整個文件編譯器告訴你的單個函數缺失。

  2. 根據您當前的情況,讓一些工具爲您分析代碼(請參閱Looking for a free source code analyzer (Function depedency tree)Looking for a free source code analyzer (Function depedency tree)),或使用全部A編寫大量代碼並運行代碼覆蓋率分析。

  3. 註釋掉從B(不在標題中)複製的源中的函數。現在你的鏈接器會抱怨任何缺失的函數。取消註釋這些,刪除其餘部分,包括他們在標題中的聲明。這是第一個相反的方法。