linker - 我如何知道 ld 使用的库的路径?
问题描述
假设我正在构建我的应用程序并将其与 clang 链接
clang -I/usr/local/include -c -o app.o main.c
clang -L/usr/local/lib -o app app.o -lfoo
我怎么知道在哪里libfoo.a
?libfoo.dylib
有详细模式吗?
可以手动搜索/usr/lib
,/usr/local/lib
但是当你使用许多库时这样做会太乏味。
解决方案
如果链接器是 GNU ld
,则传递链接器选项--trace
,例如
clang -L/usr/local/lib -o app app.o -lfoo -Wl,--trace
如果链接器是 Darwin mach-o ld
,则传递链接器选项-t
,例如
clang -L/usr/local/lib -o app app.o -lfoo -Wl,-t
然后,链接器将报告它加载的每个目标文件、存档(成员)或动态库的路径。
推荐阅读
- mysql - 在MYSQL中选择查询JSON对象数据
- android - 如何在 Android 上通过 websocket 使用 HiveMQ
- selenium - Selenium 在图标上选择
- java - java - 如何通过java Http post中的curl命令发送文件并替换目标中的文件名?
- c# - CMD 命令不执行
- javascript - 如何解决这个语法问题?
- postman - 使用 POSTMAN 的 Google 表格 API v4 权限 PERMISSION_DENIED 错误
- angular - 如何延迟加载一个非常大的库(Reveal BI)
- reactjs - Axios 和循环承诺
- c - 在 Debian CMake 中找不到“libmosquitto”