我怎么知道ld使用的库的路径?

How do I know the path of libraries used by ld?

假设我正在使用 clang 构建和链接我的应用程序

clang -I/usr/local/include -c -o app.o main.c
clang -L/usr/local/lib -o app app.o -lfoo

我怎么知道 libfoo.alibfoo.dylib 的位置?有详细模式吗?

手动搜索 /usr/lib/usr/local/lib 是可以的,但是当你使用很多库时这样做会很乏味。

如果链接器是 GNU ld,请传递 linker option --trace,例如

clang -L/usr/local/lib -o app app.o -lfoo -Wl,--trace

如果链接器是 Darwin mach-o ld,请传递 linker option -t,例如

clang -L/usr/local/lib -o app app.o -lfoo -Wl,-t

然后链接器会报告每个目标文件的路径,archive(member) 或 它加载的动态库。