设置可执行文件rpath以在cmake中安装前缀

时间:2018-07-30 09:32:07

标签: glibc dynamic-linking cpack rpath

我有一个使用一些外部库的应用程序,并且我不想将这些库安装到系统中。而且我的程序需要glibc版本,而该版本尚未安装在目标系统上,因此我必须将glibc的自定义版本与应用程序一起提供。我的应用程序用C ++编写,并使用CMake作为构建系统。我还使用CPack将应用程序以及相关性打包到RPM中。

这些是我执行的步骤:

  • 通过设置/opt/myapp将设置前缀设置为CMAKE_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设置为安装后的二进制

我知道这是非常临时的解决方案,什么是更好的解决方案?

0 个答案:

没有答案