• 2024-09-03解决auditwheel repair过程rpath被修改的问题
    问题背景AuditWheel是一个用于修复Python的whl包的工具,例如在这个CyFES开源库中,因为使用到了Cython和CUDA编译动态链接库的技术,方便Python调用。但是在编译CUDA算子时如果使用到了运行时库,那么在第一步构建whl包的时候不会自动包含运行时库,而第二步使用auditwheel进行whl包修复的
  • 2024-07-29虚拟机:GCC共享库在连接时的搜索位置和优选次序
    假设有两个相同的共享库,一个在标准的共享库搜索目录(/lib/i386-linux-gnu),一个在非标准目录(/home/charles/tmp):在/home/charles/tmp下有个测试程序main.c,调用共享库里的函数。用如下的命令编译:用ldd看一下link的共享库:可以看出,虽然我们指定了要使用/home/charles/tmp下的
  • 2024-04-29[转载] RPATH/LD_LIBRARY_PATH/RUNPATH
    原文地址:https://zhuanlan.zhihu.com/p/534778561rpath和runpath都是用来指定搜索动态链接库的目录的,如果不清楚动态链接库是什么,可见静态库vs动态库。动态链接库(sharedlibraries)作为库并不像静态库一样和可执行文件绑定,而是在运行时加载。但,可执行文件在运行时怎么知道库的
  • 2023-12-31使用CMake启用RUNPATH特性
    使用CMake,启用RUNPATH特性,可以参考官方帖子。如下源码来自于上述帖子。CMAKE_MINIMUM_REQUIRED(VERSION2.8FATAL_ERROR)PROJECT(RUNPATHC)SET(CMAKE_VERBOSE_MAKEFILEON)SET(CMAKE_INSTALL_RPATH$ENV{HOME}/lib)FILE(WRITE${CMAKE_BINARY_DIR}/main.c"intmain(void)
  • 2023-12-01高版本gcc编译出的程序在低版本glibc机器上运行
    比如我们用gcc9.3.0编译程序,但需要发布的机器gcc版本是4.8.5,怎么办?你可能想到如下方法静态编译容器发布打包依赖的so,使用本地so运行程序1.静态编译将libc和libstdc++静态编译,编译时带上如下参数。g++-static-libgcc-static-libstdc++glibc并不推荐静态链接,你依赖
  • 2023-09-21window和linux下有关xxx.dll和xxx.so动态库,可执行文件运行时的动态库检索路径文档
    没想到详细的内容都在库和命令的man手册中。ld.so动态库手册里有描述ELF可执行文件在运行时,都会在哪几个位置检索动态库。如果共享对象依赖项不包含斜杠,则它按以下顺序搜索:(1)使用二进制文件的DT_RPATH动态节属性中指定的目录(如果存在且DT_RUNPATH属性不存在)。不推荐
  • 2023-09-09linux gcc rpath
    linux下程序运行时如果想要到指定路径下查找依赖库,除了使用LD_LIBRARY_PATH,还可以使用编译选项rpath:g++-Wl,-rpath='$ORIGIN/libs'-omainmain.cpp-L.-lmylib那么只要把libmylib.so放到libs目录下,main即可正常执行。如果是在QT中,则改为:QMAKE_LFLAGS+="-Wl,-rpath='\$
  • 2023-06-16CMakeLists --- 设置rpath_link方法 编译报错try using -rpath or -rpath-link)
    指令:add_link_options("LINKER:-rpath-link,${THIRD_LIBS_DIR}")THIRD_LIBS_DIR:需要链接的库的目录作用:编译生成一个可执行文件时,依赖一个动态库A,动态库A同时又依赖动态库B.如果我们没有显示集成动态库B时,链接器会去-rpath-link设置的目录中寻找依赖项。 例子:1.库A,依赖库B
  • 2023-06-15利用 inotifywait 实现自动增量文件拷贝
    #!/bin/bashsrc=/www/wwwroot/site0/images/dest=/www/wwwroot/site1/images/tool=/user/bin/mytoolinotifywait-mrq--format'%w%f'-ecreate$src|whilereadfiledosleep1#从create到写好,有一个过程,等一下更安全rpath=$dest/${file:2
  • 2023-04-22-L、-rpath和-rpath-link的区别 [转]
    https://blog.csdn.net/Q1302182594/article/details/42102961?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-6-42102961-blog-26229287.235^v31^pc_relevant_default_base3&depth_1-utm_source
  • 2022-12-20Linux平台关于可执行程序的动态库加载路径(rpath)的查看与修改
    Linux平台关于可执行程序的动态库加载路径(rpath)的查看与修改chrpath(changerunpath)sudoapt-getinstallchrpath-y·查询rpath:chrpath-lpath/to/executable#orreade
  • 2022-12-19linux 动态库加载优先级
    在Linux系统中,动态库的加载优先级可以由多个因素决定,包括:1、LD_LIBRARY_PATH环境变量:如果在环境变量LD_LIBRARY_PATH中指定了一个库文件的路径,那么在这个路径中找
  • 2022-11-22linux下通过rpath解决cmake动态编译后找不到动态链接库问题
    通过cmake编译链接动态库后,会有一个问题,那就是需要的.so文件不能更改目录,一旦.so文件目录变了,整个程序就没法运行了,这肯定是不行的。原因后来我查一下一下,linux系统中,
  • 2022-11-22Linux C编程 使用相对路径加载动态库-rpath和$ORIGIN
    商业程序如何加载自己的so使用LD_LIBRARY_PATH的缺点是要实现设置LD_LIBRARY_PATH。不够自动化。那么大型的商业程序是如何加载自己的so呢。这里以QtCreator为例。QtC
  • 2022-10-18GCC 选项 “-Wl,-rpath=“ 转载文章
    -Wl,-rpath=<your_lib_dir> 为程序添加一个运行时库文件搜索路径。-Wl:这个是gcc的参数,表示编译器将后面的参数传递给链接器ld。-rpath:添加一个文件夹作为运行时库的搜索
  • 2022-10-15Qt开发经验小技巧251-255
    今天在一个头文件中,发现#ifdefQ_OS_WIN#ifdefQ_CC_MSVC之类的都失效了,搞得差点怀疑人生了。经历过之前类似的教训后,排查原来是没有提前引入qglobal.h头文件导致的。
  • 2022-09-06cmake find_package路径详解
    经常在Linux下面写C++程序,尤其是需要集成各种第三方库的工程,肯定对find_package指令不陌生。这是条很强大的指令。可以直接帮我们解决整个工程的依赖问题,自动把头文件和动
  • 2022-08-29cmake find_package路径详解
    Motivation经常在Linux下面写C++程序,尤其是需要集成各种第三方库的工程,肯定对find_package指令不陌生。这是条很强大的指令。可以直接帮我们解决整个工程的依赖问题,自动