在makefile中包含静态库来创建目标文件

时间:2013-11-26 03:11:41

标签: c gcc compilation 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>

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

1 个答案:

答案 0 :(得分:1)

“我目前在使用库编译目标文件时遇到问题”没有意义。编译不涉及链接;根据定义,目标文件是不相关的,没有库可能会影响它。

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

#include <lib.h>如果您的程序是本地库,则最好为#include "lib.h"。如果它是在系统范围内,那么你的方式是正确的(虽然名称lib是......太糟糕了......)

链接库并包含标题是完全不同的事情;如果您编译目标文件,则根本无法链接任何内容 - 因为链接器不参与此过程。