首页 > 其他分享 >使用CMake启用RUNPATH特性

使用CMake启用RUNPATH特性

时间:2023-12-31 16:35:43浏览次数:29  
标签:CMAKE 启用 RPATH RUNPATH INSTALL CMake main

使用CMake,启用RUNPATH特性,可以参考官方帖子

如下源码来自于上述帖子。

CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR)
PROJECT(RUNPATH C)
SET(CMAKE_VERBOSE_MAKEFILE ON)
SET(CMAKE_INSTALL_RPATH $ENV{HOME}/lib)
FILE(WRITE ${CMAKE_BINARY_DIR}/main.c "int main(void){return 0;}\n")
ADD_EXECUTABLE(main main.c)
INSTALL(TARGETS main RUNTIME DESTINATION bin)
SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--enable-new-dtags")

关于CMake和RPATH,可以参考如下文档:

关于RPATHRUNPATH的区别,可以参考如下文章,介绍比较详细。

在命令行,执行如下命令,来查看相关的RPATH信息。

readelf -d executable

在命令行,执行如下命令,可以查看当前查找到的动态库。

ldd executable

RPATHRUNPATHLD_LIBRARY_PATH三者之间的关系。

  • RPATH > LD_LIBRARY_PATH > RUNPATH
  • RUNPATH存在时,则RPATH失效。

RUNPATH不适用于间接依赖的库,使用RUNPATH时,可能需要配合使用LD_LIBRARY_PATH

标签:CMAKE,启用,RPATH,RUNPATH,INSTALL,CMake,main
From: https://www.cnblogs.com/jackieathome/p/17937635

相关文章

  • cmake的安装方法
    最近参与一个新项目,这个项目使用cmake作为构建系统。作为Java程序员,平常都使用ant或者maven来构建,难得有机会接触cmake之类的工具,所以参与这个项目是个学习cmake的好机会。但干活之初,首先要备好工具。参考安装指导,在测试环境上基于cmake源码完成安装。具体步骤如下。全新安装......
  • 西门子歌美飒计划于明年第二季启用台中机舱厂 | 百能云芯
    西门子歌美飒计划于明年第二季启用台中机舱厂,扩建后的机舱厂年产能将达到2GW,为当地创造了就业机会,目前正在积极招募300名新员工。原计划于2024年2月完工的台中风机机舱厂扩建工程将在明年1月初提前完成建筑结构、体和相关设施,并将迅速移交给运营生产单位进行内部安装。据百能云芯电......
  • cmake管理qt项目,设置windows和linux下生成的程序图标,以及任务栏显示设置的图标
    先代码设置MainWindow图标://主要用于在linux下运行程序时,在任务栏显示图标MainWindoww;w.setWindowIcon(QIcon(":/res/icon.png"));(*windows下设置生成的exe程序的ico图标后,默认也会对运行程序时任务栏的图标也设置成这个ico,但是同样的代码拿到linux下就无效,需要其他方......
  • docker 启用ipv4,默认只有ipv6
    方法一在服务器上禁用IPv6使用vim打开/etc/default/grub在第6行中增加ipv6.disable=1例如:复制代码GRUB_CMDLINE_LINUX="ipv6.disable=1..."重新配置grub并重启服务器复制代码$grub2-mkconfig-o/boot/grub2/grub.cfg$reboot等到服务器重启完成后,我们再次使......
  • Windows环境 CMake 配置C++调用Python
    #CMakeLists.txtadd_library(python3STATICIMPORTED)#这里是使用python的安装路径set_target_properties(python3PROPERTIESIMPORTED_LOCATION"D:/python/libs/python39.lib")#使用python的静态库target_link_libraries(TestDemo......
  • Java操作Word修订功能:启用、接受、拒绝、获取修订
    Word的修订功能是一种在文档中进行编辑和审阅的功能。它允许多个用户对同一文档进行修改并跟踪这些修改,以便进行审查和接受或拒绝修改。修订功能通常用于团队合作、专业编辑和文件审查等场景。本文将从以下几个方面介绍如何使用免费工具FreeSpire.DocforJava在Java程序中操作W......
  • 启用阿里云maven仓库
     中央仓库:repo1.maven.org很难访问,于是改用阿里云的备用仓库参考:IDEA这么设置Maven,再也不用担心依赖下载失败了-知乎(zhihu.com)Maven安装与配置国内源-知乎(zhihu.com)我改动maven安装目录下/conf/setting.xml,加上一个mirror配置,如下:<mirror><id>aliyunmaven......
  • 启用/禁用触摸板的shell脚本
    在笔记本上使用xfce时,不能正确识别厂商设定的fn功能键,禁用触摸板的功能失效了。在KDE或其它“重量级”桌面环境中基本都能正确识别,而且可以设置在插入外接鼠标时禁用触摸板,但是xfce太简陋了,有些功能是缺失的。比较坑的是,它可以正确识别调节背光和音量的功能键,独独缺了禁用触......
  • cmake应用:集成gtest进行单元测试
    编写代码有bug是很正常的,通过编写完备的单元测试,可以及时发现问题,并且在后续的代码改进中持续观测是否引入了新的bug。对于追求质量的程序员,为自己的代码编写全面的单元测试是必备的基础技能,在编写单元测试的时候也能复盘自己的代码设计,是提高代码质量极为有效的手段。在本系......
  • cpp环境搭建 - vs2017编译CMakeLists项目(Box2dLite)
    box2dlite地址:GitHub-erincatto/box2d-lite:Asmall2Dphysicsengine vs2017不支持utf-8withoutbom问题box2dlite的源码文件是utf-8withoutbom的,如果在里面写了中文注释,就会出现编译错误解决办法:将文件编码改成utf-8带bom的(这边没有在附加选项加/utf-8貌似也没问题......