- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
发布自己的应用程序时,在 Linux 上部署依赖项的最佳做法是什么?
一些 SO 帖子建议在包中包含所有依赖项(利用 LD_LIBRARY_PATH),其他帖子建议只运送二进制文件并使用 DEB/RPM 包的“依赖项”功能。我尝试使用第二种方法,但立即遇到了一个问题,即在某些 Linux 发行版中似乎还没有一个依赖项 (libicu52)。例如,在我的 OpenSuse 测试安装中,包管理器中只有“libicu51”可用。
我最初以为打包系统的整个思路是为了避免系统中出现重复的SO文件。但它真的有效吗(见上文),或者我应该将所有依赖项与我的应用程序一起提供,以确保它在所有发行版上运行?
最佳答案
对于自定义应用程序,它“不关心”特定于分发的打包、版本控制、升级等。我建议手动重新分发依赖项。
您可以使用 RPATH
链接器选项,通过将它的值设置为 $ORIGIN
您将告诉链接器搜索目录中的库,相对于该二进制文件,而不需要执行前预先设置LD_LIBRARY_PATH
:
gcc -Wl,-rpath,'$ORIGIN/../lib'
示例取自 here .
关于linux - 最佳实践 : deploying depencencies on Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25544044/
发布自己的应用程序时,在 Linux 上部署依赖项的最佳做法是什么? 一些 SO 帖子建议在包中包含所有依赖项(利用 LD_LIBRARY_PATH),其他帖子建议只运送二进制文件并使用 DEB/RP
我正在尝试使用 rpm 安装一个包,为此我使用 rpmdb --initdb --dbpath $HOME/myrpmdb 创建了一个不同的数据库,并在 --dbpath 中指定了该路径,同时安装。我
我正在使用 Maven 发布插件,我正在尝试发布。当我在 master 上(我正在使用 Git)时,我的项目(多模块)和依赖项(也是多模块)都有 SNAPSHOT 版本。 假设我想在不使用 SNAPS
我在项目中遇到以下问题。我有一个自己的插件,其中有一个必需的插件:org.eclipse.emf.ecp.view.treemasterdetail.validation 因此,在我的产品中构建 ty
我是一名优秀的程序员,十分优秀!