我当前在使用库编译对象文件时遇到问题。
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
……太糟糕了……)
与库链接和包含头是完全不同的事情;若编译对象文件,则根本无法链接到任何内容,因为这个过程中不涉及链接器。