仔细阅读gcc手册,我相信以下两个说法是正确的:
但是,这两个占主导地位?例如,如果我输入
gcc myprog.cpp -o myprog -Lmypath -lmylibrary
在mypath中有一个静态库“libmylibrary.a”,在LIBRARY_PATH中指定的某个地方有一个共享库“libmylibrary.so”,将使用其中哪一个库?我的猜测是静态库将被使用(即(1)占主导地位),但是我看到一些有趣的编译错误使我对此猜测表示怀疑,所以我想确保...
最佳答案
在您的示例中,静态库libmylibrary.a
将被链接到
偏好于可能会出现的任何libmylibrary.a
或libmylibrary.so
存在于链接器的默认搜索目录之一中。链接器
在mypath
中搜索任何默认位置之前,并尽快搜索
它找到一个libmylibrary.a
或libmylibrary.so
,看起来不再
满足-lmylibrary
。
如果mypath
同时包含libmylibrary.a
和libmylibrary.so
,则
后者将是首选。
我不确定“gcc手册”指的是什么来源,但是
“gcc链接器”是GNU链接器ld
,您将找到
命令行选项的含义在manual中得到了很好的解释