如何从源代码编译使用头文件的应用程序

How to compile an application that uses head files from source?

本文关键字:文件 应用程序 源代码 编译      更新时间:2023-10-16

这个问题可能已经被回答了无数次——我读过一些模拟问题,但我仍然不理解。

我有libaiml项目的来源——aiml的C++interepter——一个话匣子程序的规范。

在示例程序的源代码中,它包含对头文件的#include调用:

#include "../src/aiml.h"

头文件在那里,我编译并链接了程序,它声明找不到头文件。

各种答案都指出,头文件需要编译成静态库(.a文件),但如果没有编译成库二进制文件,程序将如何引用.h文件?

我还试图用G++和ar将src编译成一个库,但它包含了很多错误。我做错什么了吗?

我做错什么了吗?

是的:你完全错误地陈述了发生在你身上的事情。你说"它声明找不到头文件","我编译并链接了程序"。

但真正发生的是,你已经编译了链接程序失败,错误与头文件无关;相反,您在链接时会丢失符号。

要解决问题,必须libaiml链接到可执行文件(该库应该是在../src/目录中构建时构建的

g++ -I../src -o program program.cc -L../src -laiml