Linux 動(dòng)態(tài)連接加載器 ld-linux用法
來(lái)源:程序員人生 發(fā)布時(shí)間:2013-11-01 06:52:57 閱讀次數(shù):2871次
ld-linux有兩種用法,間接調(diào)用和直接調(diào)用。
間接調(diào)用時(shí),連接器會(huì)把ld-linux的執(zhí)行路徑嵌入到可執(zhí)行文件中,如elf文件時(shí),ld-linux被放在.interp段中。
直接調(diào)用時(shí),在命令行下輸入/lib/ld-linux-so.* [選項(xiàng)] [可執(zhí)行程序] [程序參數(shù)]
ld-linux按照如下順序搜索可執(zhí)行程序需要的共享庫(kù):
1. (只針對(duì)elf文件) 可執(zhí)行程序中如果有DT_RPATH或DT_RUNPATH段,則使用這兩個(gè)段中指定的搜索目錄。
2.使用環(huán)境變量LD_LIBRARY_PATH指定的搜索目錄
3.使用/etc/ld.so.cache中的搜索目錄,但如果可執(zhí)行程序在連接時(shí)候添加了-z nodeflib選項(xiàng),則不使用。
4.使用默認(rèn)的庫(kù)目錄,/lib /usr/lib,如果添加了-z nodeflib,則不使用。
編譯可執(zhí)行程序時(shí),可以安如下方法指定共享庫(kù)的目錄
gcc -Xlinker -rpath=DIR -o exe exe.c
編譯完后,運(yùn)行readelf -d exe可以看到如下段
0x0000000f (RPATH) Library rpath: [DIR]
生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)