gcc - 为什么'-Lpath/to/lib'的顺序很重要?
问题描述
将库与我的程序链接时,我收到链接器错误“未定义的引用”。我读过这篇文章,我明白图书馆的顺序很重要。'-Lpath/to/lib' 的顺序也很重要吗?当我更改“-L..”选项而不是“-l”的顺序时,我面临的问题得到了解决。请解释一下。
解决方案
-L
控制链接目录,-l
用于链接库(实际文件)。因此,通过更改-L
标志的顺序,您可以选择具有相同文件名的不同库 - 按提供的顺序搜索目录-L
(从左到右)
在您的情况下,听起来最初选择的库文件不包含某些功能-这就是您得到“未定义引用”的原因。
一般来说,使用-l
特定库的完整路径或构建系统(我喜欢 CMake)可能值得使用,您可以在其中将其设置为显式选项(并可能在构建期间在消息中打印所选文件)。
推荐阅读
- python - 查找列表元素的所有可能排列,直到组合达到提供的长度
- java - 如何返回在 2 个班级之间选择的班级?
- java - 没有在 instagram 的搜索框中搜索
- angular - 如何通过嵌套键对可观察的数据进行分组?
- android - 无法通过 Android Studio 安装应用程序
- ios - 没有这样的模块 Firebase
- javascript - 如何从一个类中随机选择一个实例?
- r - 为 Shiny 打印 $\sigma$,而不是 $$\sigma$$
- python - 我不明白 len() 在这个练习中的用处
- c# - razor 下拉列表中的 UrlDecode 未解码字符串