动态链接库的长远理解

作者: 全球彩票app苹果版  发布:2019-10-17

Linux上边分享库暗中同意路线是/usr/lib. /usr/local/lib. /lib

日常的ELF格式的可施行文件可以透过readelf --d xxx。来取得分享库和程序运营时的库的路子和信息

1、把作者写好的动态库放到系统目录里。劣势:1a、系统目录被搞的很混乱。1b、在别人计算机上陈设会很困苦。

2、指定LD_LIBRARY_PATH情形变量。劣势:不能够一贯开发银行应用程序而急需外界shell运维。

3 、今日,小编打听到,gcc在链接的时候有个rpath选项。它可以把动态库的门路直接写到elf文件中去。那样能够将rpath写成相对路线。方便安排。

程序在接连时利用了分享库,就非得在运作的时候能够找到分享库的任务。Linux的可推行程序在实行的时候暗中认可是先寻觅/lib和/usr /lib那多少个目录,然后遵照/etc/ld.so.conf里面包车型客车布署搜索相对路线。同一时间,Linux也提供了条件变量LD_LIBRARY_PATH 供客商挑选使用,客商能够因此设定它来搜索除私下认可路线之外的其余渠道,如搜寻/work/lib路线,你能够在/etc/rc.d/rc.local或其余系统运维后就可以实践到的脚本增加如下语句:LD_LIBRARY_PATH =/work/lib:$(LD_LIBRARY_PATH)。并且LD_LIBRARY_PATH路线优先于系统暗中同意路线从前查找(详细参谋《使用 LD_LIBRARY_PATH》)。

不过LD_LIBRARY_PATH的设定功用是大局的,过多的行使大概会影响到别的应用程序的周转,所以多用在调试。(LD_LIBRARY_PATH的劣点和利用轨道,能够参见《Why LD_LIBRARY_PATH is bad》 )。经常状态下推荐依然选择gcc的-R或-rpath选项来在编译时就钦命库的检索路线,况且该库的路线消息保存在可实行文件中,运行时它会直接到该路线查找库,幸免了选用LD_LIBRARY_PATH蒙受变量查找。

运维时的库能够通过rpath恐怕-讴歌ZDX来钦定,编写翻译连接时可用-L/lib/...    和la来钦命

今世连接器在拍卖动态库时将链接时路线(Link-time path)和周转时路线(Run-time path)分开,客户能够通过-L钦点连接时库的门路,通过-Escort(或-rpath)指定程序运维时库的路线,大大提升了库应用的灵活性。比如大家做嵌入式 移植时#arm-Linux-gcc $(CFLAGS) –o target –L/work/lib/zlib/ -llibz-1.2.3 (work/lib/zlib下是陆续编写翻译好的zlib库),将target编写翻译好后大家只要把zlib库拷贝到开垦板的系统默许路线下就可以。恐怕通过- rpath(或-卡宴 )

图片 1

本文由全球彩票历史版本发布于全球彩票app苹果版,转载请注明出处:动态链接库的长远理解

关键词: