对ld-linux.so为了找到一个共享库是一个在linux教程

ld-linux.so查找共享库的顺序


一个在glibc库是LD安装Linux。所以,x,其中x是一个数,和名字将在不同平台上的不同。你可以使用ldd查看:


# LDD /斌/猫


Linux的大门。所以,1 = >(0x00bfe000)


Libc。所以,6 = / / libc库,6(0x00a4a000)。


/ lib / LD Linux。所以2(0x00a28000)。


最后一个不是运行,第一个不是实际的库文件,你找不到它,它是一个与内核交互的虚拟库文件。


ld-linux.so是图书馆致力于寻找库文件,例如,猫,猫第一次告诉ld-linux.so需要libc。所以。6库文件,并将找到ld-linux.so libc。所以,在一个特定的顺序6库又称猫。


ld-linux.so怎么找到它的事实上,它不需要看。对ld-linux.so位置写的程序,和GCC去世时是编译。在gcc程序ld-linux.so的位置可以通过修改GCC spec文件的改变。


ld-linux.so查找运行时共享库的顺序


(1)LD Linux。所以。6是可执行的目标文件中指定的,可以被视为与readelf命令


(2)LD Linux。所以。6默认是在/ usr / lib和库搜索;当glibc安装 / usr /地方,看起来 / usr /局部/ lib


(3)在ld_library_path环境变量设置路径


(4)在/ etc / ld.so.conf指定的路径(或/ usr / / / LD等地方。所以conf),这是从二进制ld.so.cache要想产生的


在编译时,ld-linux.so查找共享库的顺序


(1)因此,6被设置在GCC的规范文件中。


(2)路径的搜索目录打印打印gcc --主要是libgcc_s.so和其他库。可以设置gcc_exec_prefix


(3)在library_path环境变量设置路径,或L / usr /地方在编译命令行指定 / lib


(4)默认的搜索路径序列集的LD binutils时指定编译binutils。(由LD --冗长;grep search,|;视图)


(5)二进制程序的搜索路径序列中设置PATH环境变量。将军/ usr /本地/本高于 / usr /箱


(6)搜索路径序列的头文件在编译的时候是类似图书馆的搜索顺序。一般/ usr /局部/包括高于 / usr /包括