阅读gcc手册,我相信以下两个陈述是正确的:
命令行上指定的库搜索路径会先于“默认”路径(我认为这意味着LIBRARY_PATH环境变量中的内容)被搜索
共享库会优先链接静态库(如果没有标志要求另外操作的话)
但是这两者哪一个更具支配性?例如,如果我输入以下命令:
gcc myprog.cpp -o myprog -Lmypath -lmylibrary
在我的路径中有静态库"libmylibrary.a",在LIBRARY_PATH指定的某个地方有共享库"libmylibrary.so",这些库中哪一个将被使用?我的猜测是静态库将被使用(即(1)占主导地位),但我看到一些有趣的编译错误,让我对这个猜测产生了质疑,所以我想确保一下...
.o
(或.c
)文件之后出现-lmylibrary
。 - nwellnhofg++ -E -x c++ - -v < /dev/null
命令让 gcc 列出实际路径。除此之外,我认为我之前在这里看到过这个问题的答案,包括如何通过指定库的完整名称(带有.a
或.so
扩展名)来覆盖默认行为。 - swalog