我目前在使用库编译目标文件时遇到问题。
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>
链接静态库的正确方法是什么? (这是一个很好的术语吗?我们链接静态库还是包含它?)
答案 0 :(得分:1)
“我目前在使用库编译目标文件时遇到问题”没有意义。编译不涉及链接;根据定义,目标文件是不相关的,没有库可能会影响它。
“lib.h:没有这样的文件或目录”哪个阶段?关于myprog.o
的汇编?什么是实际的编译命令? -L$(USER_DIR)/lib
应该是-I$(USER_DIR)/lib/include
吗?
#include <lib.h>
如果您的程序是本地库,则最好为#include "lib.h"
。如果它是在系统范围内,那么你的方式是正确的(虽然名称lib
是......太糟糕了......)
链接库并包含标题是完全不同的事情;如果您编译目标文件,则根本无法链接任何内容 - 因为链接器不参与此过程。