热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

为什么在使用-rpath时需要-L?

如何解决《为什么在使用-rpath时需要-L?》经验,为你挑选了1个好方法。

我发现在使用-rpath时必须给出-L标志.例如:

gcc -o test test.o -L. -lmylib -Wl,-rpath=.

为什么需要-L标志?编译时需要哪些信息比h文件中的信息多?

如果我删除-L.我收到以下消息:

gcc -o test test.o -lmylib -Wl,-rpath=.
/usr/bin/ld: cannot find -lmyLib

但是,删除这两个标志是完全可以的.像这样:

gcc -o test test.o -lmylib

前提是可以在/ usr/lib中找到libmyLib.为什么现在不需要-L?

这是/sf/ask/17360801/的后续问题.



1> OMGtechy..:

即使是动态库也需要一定程度的静态链接; 链接器需要知道动态库应该提供哪些符号.关键的区别在于动态库在运行时提供定义,而完全静态库在链接时提供定义.

因此,-L需要指定要链接的文件的位置,就像-l指定特定库一样.在.表示当前目录.

-rpath当应用程序尝试加载动态库时,它会在运行时发挥作用.在尝试加载动态库时,它会向程序通知要搜索的其他位置.

-L/usr/lib不需要指定的原因是因为默认情况下链接器在那里查找(因为这是放置库的一个非常常见的地方).


推荐阅读
author-avatar
mobiledu2502894753
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有