2012-06-17 14 views
0

我寫使用嵌入式處理器(NIOS 2)OpenCV庫的算法,以港口庫要在尼奧斯編譯:編譯交流項目,以最小的尺寸

1 - 我刪除highgui和所有處理IO操作的函數。

2 - 我拿走了剩餘的文件(很多),並將它們與我的main.cpp一起添加到一個新的eclipse項目中。

3 - 我可以編譯代碼並運行正常,但主要問題是將下載到嵌入式處理器(.elf文件)的輸出文件太大〜20 MB,沒有優化和〜6 MB優化級別爲3.

是否有任何提示可以在此大型項目中僅編譯所需的文件並跳過其他文件,而這些文件在代碼中不會調用?

+0

你有沒有[剝離](http://stackoverflow.com/questions/1413171/what-is-strip-gcc-application-used-for)輸出? – tinman

回答

2

假設您使用main()構建了一個正常的可執行二進制文件,鏈接器已經刪除了根本無法調用的內容。

如果您知道某些文件根本沒有使用,請將其從項目中刪除。任何導致的錯誤都會告訴你他們是如何調用,並且你需要刪除那些可能導致的代碼路徑。您可以使用-Os來優化尺寸而不是-O3,但我不知道NIOS平臺上有多少差異,除非情況發生了根本性的變化,否則對尺寸的優化始終是必不可少的。

+0

通常,當我在windows上編寫算法(使用cmake和visual studio從opencv src構建.lib文件)時,通常會鏈接.lib文件,exe輸出約爲60 KB。 爲什麼會有這麼大的差異? – Ahmed

+1

@Ahmed 60 KB包括你拿出的GUI?根據所提供的信息,我真的不知道發生了什麼。如果代碼真的死了,那麼你可以刪除它(例如從項目中刪除文件)而沒有問題。 – Potatoswatter

+0

是的。包括一切。 這裏是我有兩個場景: - 下載打開cv 1 - 在Windows上從opencv的完整src構建庫文件uisng visual studio和cmake。 out〜60 KB 2 - 在NIOS上,首先從src中刪除一些窗口相關的文件,然後取出剩餘的src文件,將它們放到一個項目中然後編譯。出〜6MB – Ahmed