如何使用 g++ 解析 foo 的库路径-Lhere -Lthere -lfoo 不构建对象?
我想显示将在编译的链接阶段使用的库的显式路径。我想这样做,以便我可以将库作为依赖项添加到单独的对象文件中。
换句话说,我经常使用以下链接进行链接:
g++ myFile.cpp -Lsomewhere -Lelse -Lhere -Lthere -lfoo
有没有办法强制使用 -L 来强制 g++、ld、ldd 或其他内容来解析“-lfoo”,而无需实际使用 -L链接任何内容以便我可以使用显式路径作为依赖项?有关更明确的信息,请参阅 Makefile 更新的库依赖项。
I would like to display the explicit path to a library which will be used in the linking stage of compilation. I want to do this so that I can add the library as a dependency to a separate object file.
In other words, I often link using:
g++ myFile.cpp -Lsomewhere -Lelse -Lhere -Lthere -lfoo
Is there a way to coerce g++, ld, ldd, or something else to resolve '-lfoo' using the -L's without actually linking anything so that I can use the explicit path as a dependency? For more explicit info, see Makefile Updated Library Dependency.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这并不理想,我希望有一个更清晰的答案,但您可以从 gcc 获取默认搜索路径,然后在每个路径中搜索文件。这是 GNU make 中的:
This isn't ideal, and I hope there is a cleaner answer, but you can get the default search paths from gcc, then search each one for the files. Here it is in GNU make:
因为您知道链接器搜索目录以查找相关库的顺序(参见手册),你可以使用Make的
vpath
以相同的顺序搜索它们:Since you know the order in which the linker searches directories looking for the library in question (see the manual), you can use Make's
vpath
to search them in the same order: