您可以建立clang 链接:
clang -dynamic -bundle -o asdf -L/usr/local/Cellar/mysql/8.0.19/lib -lmysqlclient -lssl -lcrypt -v
通过设置失败时成功:
export LIBRARY_PATH=/usr/local/opt/openssl@1.1/lib/
在clang 命令的环境中。
这证明clang 受到LIBRARY_PATH 环境的影响
变量的方式与 GCC 编译器相同。
LIBRARY_PATH 在man clang 的ENVIRONMENT 部分中没有提及,
或者实际上根本没有,所以这种类似 GCC 的行为可以严格地被视为不是强制性的。
然而,遗漏似乎是手册中的疏忽,
因为clang 通常会努力成为gcc 的不引人注目的替代品。如果
我们以详细模式运行 Linux clang 链接:
$ export LIBRARY_PATH=/wheres/wally; clang -v main.o -L. -lfoo -lbar
clang version 10.0.0-4ubuntu1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/9
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/9
Candidate multilib: .;@m64
Selected multilib: .;@m64
"/usr/bin/ld" -z relro --hash-style=gnu --build-id --eh-frame-hdr \
-m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o a.out \
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crt1.o \
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o \
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/crtbegin.o \
-L. -L/usr/bin/../lib/gcc/x86_64-linux-gnu/9 \
-L/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu \
-L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu \
-L/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../.. \
-L/usr/lib/llvm-10/bin/../lib -L/lib -L/usr/lib \
-L/wheres/wally \ # < There's wally!
main.o -lfoo -lbar -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc \
--as-needed -lgcc_s --no-as-needed \
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/crtend.o \
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o
我们观察到clang 将-L${LIBRARY_PATH} 的扩展插入到
ld 命令行在所有其他 -Ldir 选项之后。如果我们
追踪LIBRARY_PATH in the clang source tree,
我们将看到使它这样做的代码。
在man gcc 的ENVIRONMENT 部分,
LIBRARY_PATH 已记录在案:
LIBRARY_PATH
LIBRARY_PATH 的值是一个以冒号分隔的目录列表,很像 PATH 。
当配置为本地编译器时,GCC 会尝试指定的目录
搜索特殊链接器文件,如果使用 GCC_EXEC_PREFIX 找不到它们。
使用 GCC 链接在搜索普通库时也会用到这些目录
对于 -l 选项(但使用 -L 指定的目录在前)。
同样在GCC online documentation: 3.21 Environment Variables Affecting GCC中逐字出现
clang 与 LIBRARY_PATH 的作用符合我强调的句子。
值得知道的是,虽然为此目的使用LIBRARY_PATH 可能已经
你出一个果酱,它在常规联动练习中不受青睐,因为它是
当你研究一个
链接:其效果仅在详细模式下显示(通过gcc 或clang)。这
安装人员的建议:
export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"
是您所期望的。我不知道为什么它不适合你。