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

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

【问题讨论】:

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

标签: c++ linux shared-libraries portability


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 2023-03-25
    • 1970-01-01
    • 2011-05-13
    • 2022-01-06
    相关资源
    最近更新 更多