glibc - 设置可执行 rpath 以在 cmake 中安装前缀
问题描述
我有一个使用一些外部库的应用程序,我不想将这些库安装到系统中。我的程序所需glibc
的版本没有安装在目标系统上,我必须glibc
随我的应用程序一起发布自定义版本。我的应用程序是用 C++ 编写的,并使用 CMake 作为构建系统。我还使用 CPack 将我的应用程序与依赖项一起打包到 RPM 中。
这些是我所做的步骤:
将安装前缀设置为
/opt/myapp
by setCMAKE_INSTALL_PREFIX
建立自定义
glibc
并安装到我的计算机(开发人员的计算机)ldd
构建二进制文件,使用命令检查库依赖项将所有依赖项复制到
lib
我项目中的文件夹中,INSTALL(FILE...)
用于将它们安装到${CMAKE_INSTALL_PREFIX}/lib
用于
patchelf
修补二进制解释器${CMAKE_INSTALL_PREFIX}/lib/ld.so
为了让我的应用程序正常工作,我还需要执行一个步骤,即设置rpath
为${CMAKE_INSTALL_PREFIX}/lib
. 但是如果我使用patchelf
,CPack 不允许我打包我的应用程序。安装后我必须设置rpath
为二进制文件。
我知道这是非常临时的解决方案,什么是更好的解决方案?
解决方案
推荐阅读
- elasticsearch - c# ElasticSearch NEST 聚合查询
- python - 通过比较数组之间的元素位置来获取 numpy-array 元素的索引
- javascript - 尝试在 React 和 Typescript 中将字符串(用户名)从客户端发送到服务器
- prolog - 如何在所有参数模式的后继算术中实现阶乘序列?
- python - 如何在 Python 中打开和选择文件
- java - 如何在链表头部之前添加一个新节点
- c - Cygwin 安装包括 linux/ip.h
- javascript - 拆分功能以突出显示 React 中的搜索词
- python - selenium firefox驱动没有返回结果
- r - 用于填充的垂直图例中的一致图例键高度