首页 > 其他分享 >linker

linker

时间:2023-08-21 20:33:32浏览次数:31  
标签:ld 路径 linker 指定 搜索 so lld

用法:

用法:ld [选项] 文件1 文件2 ...

最常用的两个选项

  -l 库名, --library 库名 搜索库“库名”
  -L 目录, --library-path 目录
                              将“目录”添加到库搜索路径中

ld的搜索路径

ld默认是没有任何搜索路径的,ld解析依赖关系是主要是通过下面几个因素决定的

  • 通过ld选项-l -L指定的库文件或者路径
  • 通过ld.so,注意ld.so不是ld
  • 环境变量LD_LIBRARY_PATH指定的路径

其中ld.so是主要的解析依赖关系的组件,ld.so搜索的路径主要是以下几个方面(顺序从上到下)

  • DT_RPATHDT_RUNPATH指定的路径,这是二进制可执行文件中直接包含的路径(通过-Wl,-rpath-Wl,-runpath选项指定),比如下面的例子是编译的时候为*.o文件指定
    gcc -o myprogram myprogram.c -Wl,-rpath,/path/to/shared/libs
    DT_RPATH是旧标记,DT_RUNPATH是新标记
  • runtime配置文件/etc/ld.so.conf中指定的路径
  • linux系统默认的库路径:/lib/usr/lib

以上组成了ld搜索so文件的路径

ld gold lld

常说的ld,约定俗成的被认为是gnu ld,除此之外还有其他实现的linker,比如gold和lld
他们在linux系统中的名称是ld ld.gold ld.lld
lld是llvm提供的

cmake指定搜索路径

cmake_minimum_required(VERSION 3.0)
project(MyProgram)

# 添加可执行文件
add_executable(my_program main.cpp)

# 指定共享库的搜索路径并链接共享库
target_link_libraries(my_program PRIVATE
    /path/to/my_library_directory
    my_library
)

标签:ld,路径,linker,指定,搜索,so,lld
From: https://www.cnblogs.com/feipeng8848/p/17647013.html

相关文章

  • Unity的IUnityLinkerProcessor:深入解析与实用案例
    UnityIUnityLinkerProcessorUnityIUnityLinkerProcessor是Unity引擎中的一个接口,它允许开发者在Unity项目构建时对代码进行链接处理。这个接口可以用来优化项目构建大小,减少不必要的代码和资源,提高项目的性能和加载速度。接口定义IUnityLinkerProcessor接口定义如下:namespac......
  • java中tomcat 加载动态库XXX.dll报错“java.lang.UnsatisfiedLinkError: already load
    错误:在Tomcat项目和supermapiserverwar包中使用了相同的supermapjavaiobject【四个jar包】,实际的访问过程如下:这时候在访问Tomcat的时候,就会出现一个错误:anexceptioncaughtatEnvironment.loadLibrary(),programwillcontinuerunning.java.lang.UnsatisfiedL......
  • pip install flask 时,总包blinker uninstall 失败(ERROR: Cannot uninstall 'blinker'
    今天用pipinstallflask时,总因为uninstallblinker失败,报错如下:```ERROR:Cannotuninstall'blinker'.Itisadistutilsinstalledprojectandthuswecannotaccuratelydeterminewhichfilesbelongtoitwhichwouldleadtoonlyapartialuninstall.``` ##......
  • ld链接脚本(Linker Scripts)
    参考博客:比较全的解释内容。链接脚本(LinkerScripts)语法和规则解析(自官方手册)https://www.cnblogs.com/jianhua1992/p/16852784.html  ld文件(链接器脚本)是一个文本文件,用于描述可执行文件或者目标文件的内存布局和分配。在编译和链接代码时,链接器会使用ld文件来确定程......
  • opencv 无法使用 dll 动态链接库 UnsatisfiedLinkError java.library.path Can‘t fin
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME)使用如上方法加载本地dll文件。 一般会出现两种错误:1、UnsatisfiedLinkErrorjava.library.path  2、UnsatisfiedLinkError Can'tfinddependentlibraries 第一种错误为没有加载到指定的dll文件,该配置可以百度搜索java.li......
  • Unity的IUnityLinkerProcessor:深入解析与实用案例
    UnityIUnityLinkerProcessorUnityIUnityLinkerProcessor是Unity引擎中的一个接口,它允许开发者在Unity项目构建时对代码进行链接处理。这个接口可以用来优化项目构建大小,减少不必要的代码和资源,提高项目的性能和加载速度。接口定义IUnityLinkerProcessor接口定义如下:namespace......
  • cmake add to linker from CLI
    CMAKE_EXE_LINKER_FLAGSCMAKE_MODULE_LINKER_FLAGSCMAKE_SHARED_LINKER_FLAGSCMAKE_STATIC_LINKER_FLAGShttps://cmake.org/cmake/help/latest/command/target_link_options.htmlhttps://stackoverflow.com/questions/24532853/how-can-i-add-linker-flag-for-libraries......
  • Service Mesh框架选型对比分析:Linkerd、Envoy、Istio、Conduit
    当前,业界主要有以下主要几种ServiceMesh框架,下面进行详细的说明及对比。1、LinkerdLinkerd是Buoyant公司2016年率先开源的高性能网络代理,是业界的第一款ServiceMesh框架。其主要用于解决分布式环境中服务之间通信面临的一些问题,如网络不可靠、不安全、延迟丢包等问题。Linkerd使......
  • Al.exe (Assembly Linker)
    原文网址:https://learn.microsoft.com/en-us/dotnet/framework/tools/al-exe-assembly-linkerTheAssemblyLinkergeneratesafilethathasanassemblymanifestfrom......
  • cmake错误:CMake Error: CMake can not determine linker language for target
    解决方案:因为你的library只有头文件,没有cpp文件在add_library中增加cpp文件同时建立一个空的cpp文件即可。处理后的源代码结构和CMakeLists.txt内容如下所示:其中,math.c......