c-在makefile中包含静态库以创建对象文件



我当前在使用库编译对象文件时遇到问题。

myprog.o : $(USER_DIR)/src/myprog.c $(USER_DIR)/include/myprog.h $(USER_DIR)/lib/include/lib.h $(USER_DIR)/lib/lib.a
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -L$(USER_DIR)/lib -c $(USER_DIR)/src/myprog.c

我得到的错误是:

lib.h:没有这样的文件或目录

在myprog.c中,我包括库头,如下所示:

#include <lib.h>

链接静态库的正确方式是什么?(这是一个好术语吗?我们是链接静态库还是包括它?)

"我目前在用库编译对象文件时遇到问题"没有意义。汇编不涉及链接;对象文件根据定义是取消链接的,任何库都不会影响这一点。

"lib.h:没有这样的文件或目录"在哪个阶段?关于myprog.o?实际的编译命令是什么?-L$(USER_DIR)/lib应该是-I$(USER_DIR)/lib/include吗?

若库是程序的本地库,则#include <lib.h>最好是#include "lib.h"。如果它是全系统的,那么你的方式是正确的(尽管名称lib……太糟糕了……)

与库链接和包含头是完全不同的事情;若编译对象文件,则根本无法链接到任何内容,因为这个过程中不涉及链接器。

最新更新