Makefile:将库添加到另一个项目

Makefile: add library to another project

本文关键字:另一个 项目 添加 Makefile      更新时间:2023-10-16

我想更改现有的makefile以包含我自己制作的另一个静态库。我遵照指示建造了图书室;它目前包含除main.o以外的所有.o文件。我们称我的库为libABC.a。如果有区别,我正在修改的包是用c++编写的,而我包含的库是用C编写的。

到目前为止,我已经将-lABC添加到我的库列表中,并将该库放置在与其他库相同的目录中,这样我就不必添加另一个-L命令。我已经将所有头文件移动到包的/include目录(不确定是否必须这样做),这样我就可以避免添加另一个-I命令。这样编译不会给我任何错误,但是如果我尝试为库中的一个头文件添加#include命令并调用函数,我会得到undefined reference to function()错误。

你知道我该怎么做吗?

由于该包是用c++编写的,而您的库是用C编写的,因此您可能需要使用extern "C"链接,因为c++可能期望对您的符号进行命名混淆。

最简单的方法是将C函数定义包装在extern "C"块的头文件中,如:

#ifdef __cplusplus
extern "C" {
#endif
int myFunction();
int someOtherFunction(char *);
#ifdef __cplusplus
} // extern "C"
#endif

确保只在代码块中包装你自己的函数定义;从头文件中#include获取的任何外部库都应该在块之外。

参见:在c++源代码中,extern "C"的作用是什么?

相关文章: