【发布时间】:2012-07-11 20:43:36
【问题描述】:
这可能很明显,但我想在我做任何轻率的事情之前确定要做什么。我想将我的 C++ 程序、库和所有程序编译为发布可执行文件,以便该文件可以在任何计算机上运行(运行相同的操作系统)。现在,我在 Mac OS X (10.7.4) 上,我需要能够在其他 Mac 上运行我的可执行文件。问题是我在我的项目中使用 OpenCV 库,而我只在这台计算机上安装了它。有没有办法用 g++ 编译,如果我在没有安装 OpenCV 库的计算机上打开这个程序,它仍然可以工作?如,将所有依赖项构建到可执行文件中。还是这会自动发生?
我对“.o”目标文件也很陌生,那么这些与它有什么关系吗?我更喜欢将它们全部放入一个文件的方法,但只要它可以工作,我就会接受一个包。
谢谢。
【问题讨论】:
-
尝试用
g++ -static链接;这应该将 OpenCV 的静态版本(和其他依赖项)链接到您的二进制文件中。不过,生成的二进制文件可能非常大。 -
@larsmans 如果静态链接受 GPL 或类似许可的约束,则静态链接也会因许可而变得复杂。
-
您应该能够将 OpenCV 动态库添加到您的应用程序包中(OS X 应用程序不是文件,而是具有特殊结构的文件夹)。我不知道该怎么做,但 Apple 的文档通常知道。
标签: c++ opencv compilation g++