我使用gcc
比任何其他编译器更多,所以我将使用这个编译器套件来塑造我的示例,但我几乎所有我试过的套件都经历过这个问题,例如gcc
,{ {1}},mingw
和clang
。
msvc
提供此标志:
gcc
你写了-l
这个名字,gcc会找到一个名为foo
libfoo
你附加了libs所在的路径,gcc尝试将所需的库与它在该路径中找到的库相匹配-L
基本上是同一个lib的不同路径池,因此可执行文件“足够智能”,足以在需要时查找备选方案。这个问题对我来说很重要,没有人解决我的问题,而且每一个标志都遇到同样的问题:含糊不清。
如果我只是想链接一个我知道没有办法做到这一点的图书馆而没有在最好的情况下包含一些歧义,我想要的是:
-rpath
的名称一样,因为我的libs被命名为-l
而不是foo.so
我经常在不同版本中处理不同的库,由于历史和兼容性的原因,它们经常共享相同的名称,这是一个噩梦编译和链接gcc,因为我从来没有得到我想要链接到我的可执行文件的那个。
感谢。
答案 0 :(得分:1)
最简单的方法是简单地指定库。
gcc -o test test.o /path/my_library.so /path/to_other_library.a
这种方法的明显缺点当然,如果您移动该库,那么您的应用程序将不再工作,但由于您声明您在固定位置拥有库,因此它应该适用于您的情况。