将库放在Linux中的exe文件夹中

Posted

技术标签:

【中文标题】将库放在Linux中的exe文件夹中【英文标题】:put libraries inside exe folder in Linux 【发布时间】:2015-05-30 15:08:07 【问题描述】:

我正在尝试制作一个可移植的 Linux 应用程序,其中所有必需的库都包含在该文件夹中。 但是如果我只是将它们放在可执行文件旁边的文件夹中,它说它找不到库。 那么我如何才能在一个文件夹中发布包含所有必需库的应用程序呢?

【问题讨论】:

查找LD_LIBRARY_PATH 是的,但我必须为每台我想在其上运行应用程序的 PC 设置它。没有办法解决这个问题吗? “没有办法解决这个问题吗?” 我不知道。 所以每次我运行应用程序时,我必须手动设置一个环境变量?或者有没有办法使用脚本将变量设置为当前路径并启动应用程序,我可以在没有 root 的情况下使用? 你的安装脚本应该把它放在用户或机器的启动配置文件中。 【参考方案1】:

我正在尝试制作一个可移植的 Linux 应用程序,其中所有必需的库都包含在文件夹中。

您正在寻找的是带有RPATH 的二进制文件,其中包含$ORIGIN。例如,构建你的二进制文件:

gcc -o myexe main.o ... '-Wl,-rpath=$ORIGIN/'

(注意:单引号是必需的。)将导致myexe 在找到二进制文件本身的同一目录中查找共享库。

【讨论】:

以上是关于将库放在Linux中的exe文件夹中的主要内容,如果未能解决你的问题,请参考以下文章

linux怎么执行exe控制台文件

怎么安装NOI Linux?

如何将dll文件放在其他目录下而不是exe所在

如何创建exe文件

如何将dll文件放在其他目录下而不是exe所在的目录或系统目录

vs2010怎么把生成的exe与依赖的dll放在不同文件夹下