2012-06-17 15 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