我在Eclipse CDT MinGW项目中链接到名为xyz.a
的库时遇到问题。 Eclipse项目找不到此库,除非我将其重命名为libxyz.a
。
我已添加:
Properties/C C++ General/Paths and Symbols/Library Paths
项目的图书馆路径。 Properties/C C++ General/Paths and Symbols/Libraries
投影的图书馆名称。我在这里指定的图书馆名称是xyz
,所以它没有extesion。我应该在此处指定什么才能成功包含xyz.a
而无需将其重命名为libxyz.a
? 我在网上找到的一些信息:
How do I specify the libraries to be searched by the linker?
MinGW supports libraries named according to the "<name>.lib" and "<name>.dll" conventions, in addition to the normal "lib<name>.a" convention common on *nix systems. To include libraries named according to any of these conventions, simply add an associated "-l<name>" specification to the compiler command, ensuring it is placed after the name of the module in which the reference appears.
Note that, if the library is not found in any of the default library search paths, you may also need to insert an appropriate "-L<dir>" switch to specify its location; (it is recommended that you place the "-L<dir>" switch before the "-l<name>" specification which requires it).
Also note that the library names "lib<name>.a" and "lib<name>.lib" are not equivalent; if you have a library named according to the aberrant "lib<name>.lib" convention, it will not be found by an "-l<name>" specification -- if you cannot rename the library, you must use the form "-llib<name>" instead.
答案 0 :(得分:3)
你可以链接一个名为oddname
的库 - 其中oddname
包含任何文件扩展名 - 在Eclipse CDT中如下:
在项目属性 - >&gt;中导航 C / C ++ Build - &gt; 设置强> - &GT; 工具设置 - &gt; GCC C ++链接器 - &gt;的库强>
在图书馆(-l)面板中添加:oddname
如有必要,在图书馆搜索路径(-L)面板中添加路径
oddname
好的
此设置会将选项-l:oddname
添加到生成的GCC链接中
命令。 -l:filename
是表示-l
选项的形式
传统的lib
前缀和{.so|.a}
扩展名不暗示
filename
是要链接的库的实际文件名。 Here is the documentation
答案 1 :(得分:1)
最简单的选择是将库添加到GCC的命令行。要使用CDT执行此操作,请将库(无论名称是什么)添加到其他对象(在项目设置下 - &gt; C / C ++ Build - &gt; GCC C链接器 - &gt; 其他)
这是一个截图,我在其中添加了一个文件名为badname.a
的库到GCC的命令行。
构建运行时,这是结果命令行:
Invoking: GCC C Linker
gcc -o "SO" ./src/SO.o /home/me/workspace/SO/badname.a
注意:上述解决方案的缺点是包含了整个库,而不仅仅是其中引用的对象。您也可以通过将链接器标记框添加到同一对话框中来添加所需的任何链接器标记。