Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
部署Linux c++;具有第三方库的可分发应用程序 我正在开发一个跨平台的C++应用程序,目前我正在处理它在Linux下工作的领域,我几乎没有什么经验。这个应用程序使用第三方库,比如Poco和Boost。我正在开发一个Ubuntu桌面版本,在这个版本中,我动态构建了它们,它们的头包含在usr/local/include中,而.so文件包含在usr/local/lib中。 如果我想发布此应用程序,只打包我的源代码(可执行文件)+第三方库的头文件和so文件就足够了吗?还是应用程序的接收者应该在他的机器上安装这些库以便应用程序执行?_C++_Linux_Libraries - Fatal编程技术网

部署Linux c++;具有第三方库的可分发应用程序 我正在开发一个跨平台的C++应用程序,目前我正在处理它在Linux下工作的领域,我几乎没有什么经验。这个应用程序使用第三方库,比如Poco和Boost。我正在开发一个Ubuntu桌面版本,在这个版本中,我动态构建了它们,它们的头包含在usr/local/include中,而.so文件包含在usr/local/lib中。 如果我想发布此应用程序,只打包我的源代码(可执行文件)+第三方库的头文件和so文件就足够了吗?还是应用程序的接收者应该在他的机器上安装这些库以便应用程序执行?

部署Linux c++;具有第三方库的可分发应用程序 我正在开发一个跨平台的C++应用程序,目前我正在处理它在Linux下工作的领域,我几乎没有什么经验。这个应用程序使用第三方库,比如Poco和Boost。我正在开发一个Ubuntu桌面版本,在这个版本中,我动态构建了它们,它们的头包含在usr/local/include中,而.so文件包含在usr/local/lib中。 如果我想发布此应用程序,只打包我的源代码(可执行文件)+第三方库的头文件和so文件就足够了吗?还是应用程序的接收者应该在他的机器上安装这些库以便应用程序执行?,c++,linux,libraries,C++,Linux,Libraries,检查您的许可证以获取第三方代码。如果是GPL,请在下载中包含源代码tarballs。这是最简单的,因为它不会让你以后对任何事情负责。否则,如果Debian/Ubuntu在六年后将其从他们的存档镜像中删除,你仍然有责任为任何要求它的人提供源代码 然后考虑将您的代码制作成一个独立的Linux应用程序。您可以通过将所需的所有共享库放入目录来实现这一点。您可以选择定义边界的位置。您可能会决定可以依赖系统的C库、OpenGL、SDL等,而不需要捆绑它们 然后创建一个shell脚本,该脚本使用$0(这是sh

检查您的许可证以获取第三方代码。如果是GPL,请在下载中包含源代码tarballs。这是最简单的,因为它不会让你以后对任何事情负责。否则,如果Debian/Ubuntu在六年后将其从他们的存档镜像中删除,你仍然有责任为任何要求它的人提供源代码

然后考虑将您的代码制作成一个独立的Linux应用程序。您可以通过将所需的所有共享库放入目录来实现这一点。您可以选择定义边界的位置。您可能会决定可以依赖系统的C库、OpenGL、SDL等,而不需要捆绑它们

然后创建一个shell脚本,该脚本使用
$0
(这是
sh
变量,它是脚本的全名)来找出脚本的运行位置。将
LD\u LIBRARY\u PATH
设置为
dirname“$0”
,然后
exec realprogram$@


如果您这样做,您的代码可以在系统上运行很长一段时间。看看Quake 3是如何为Linux打包的,它是这样做的。

为什么你认为你需要用你的应用程序二进制文件分发cpp和头文件?首先,请阅读所有使用过的LIB的许可证。作为一个在几个Linux发行版中打包了这些东西的人:只打包你自己的代码,然后提供清晰的文档,说明编译和安装您自己的warez必须安装哪些依赖项。如果您提供自己的RPM spec文件,或APT需要做的任何等效工作,作为您自己的软件包的一部分,则可以获得免费的布朗尼点数。@I可检查cpp和h文件编写错误,我指的是仅可执行文件。我将在@DeviceFan处更正它,关于库许可证是MIT和Boost软件许可证,据我所知,允许它们的动态链接发行版。请更正我的错误。在我的示例中,如果我这样做是错误的,可以绕过对usr/local/include的读取,因为我在IDE或Makefile示例中都找不到这样做的方法我发现无法从生成过程中排除此文件夹