用法:
用法: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_RPATH
和DT_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