我在使用Code::Blocks 13.12编译静态库时遇到了问题。我需要在自己的静态库中使用第三方静态库。所以,我有一个libOtherLib.a,我正在尝试构建libMyLib.a并链接libOtherLib.a。问题在于,在构建的链接阶段,链接器没有包含libOtherLib.a。以下是一些额外的信息:
- 我正在使用GNU GCC编译器
在整个项目的项目构建选项中(不是特定于Debug或Release),我:
- 在链接器设置中的链接库列表中添加了libOtherLib.a
- 在搜索目录->链接器列表中添加了libOtherLib.a的路径
在搜索目录->编译器列表中添加了libOtherLib.a的.h文件路径
该库完全编译正常(没有错误生成bin / Debug / libMyLib.a)
任何帮助都将不胜感激。我有一种直觉,这与它是静态库而不是应用程序(控制台或其他类型)有关,但我不确定如何或为什么。我在项目属性窗口中将构建目标类型更改为“控制台应用程序”,看起来它正在链接libOtherLib.a,但由于此代码旨在成为库而不是应用程序,因此出现了其他错误。
这是在构建结束时执行的链接器命令。libOtherLib.a没有出现在任何地方,这就是问题所在,只是不确定解决方案是什么。
ar -r -s bin/Debug/libMyLib.a <all of my .o files>
如果问题主要是由编译器、链接器、设置或者Code::Blocks本身引起的,那么列出问题可能的原因也会很有用。
ar
不是一个链接器。在构建静态库时不使用链接器。通常不会将一个静态库放入另一个静态库中。想要使用MyLib
的应用程序应该同时链接MyLib
和OtherLib
。 - Oktalist