将所有库依赖项包含到可执行文件中 Linux

Posted

技术标签:

【中文标题】将所有库依赖项包含到可执行文件中 Linux【英文标题】:Include all library dependencies into an executable file Linux 【发布时间】:2015-06-22 08:42:50 【问题描述】:

提前致谢。我需要在具有 Opencv 库的所有依赖项的不同机器上使用 linux C++ 应用程序。 我应该在每台机器上安装 opencv 还是只使用库? 如果是这样,我该怎么做?

【问题讨论】:

您可以静态链接库,创建一个包含大多数库的巨大可执行文件。或者您可以在每个系统上安装 OpenCV,但您不需要只安装基础库的开发包。 谢谢!如何静态链接所有库?我将 -static 放在 makefile 中,但它只是链接我的库而不是 Opencv 的! 我不是很推荐,但是在链接的时候加上-static标志。 你可以用cmake -DBUILD_SHARED_LIBS=OFF构建静态opencv库 【参考方案1】:

OpenCV 是一个库,因此需要将其安装在您打算运行使用 opencv 的程序的机器上。按照http://opencv.org/downloads.html 上您感兴趣的目标的下载说明进行操作。如果您打算在多台机器上安装程序,也可以随程序一起创建安装脚本。

【讨论】:

以上是关于将所有库依赖项包含到可执行文件中 Linux的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习——动态链接库和静态链接库

Maven引入本地依赖Jar到可执行Jar包中

CMake 是不是将包含的标头中的所有内容编译到可执行文件中,还是仅将主类中使用的部分编译为可执行文件?

在现代CMake项目中存档静态依赖项

静态库中的符号有时会链接到可执行文件,有时不会

Linux动态和静态链接