c - 如何将库添加到 make 文件中

标签 c makefile

我正在编辑库中已有的示例文件。在示例的目录中,有一个我用来编译和运行示例的 Makefile。我现在想向此 make 文件添加一个附加库,我尝试将 header 和 .c 文件复制并粘贴到 Makefile 中指定的库文件夹中,但没有找到它。这是 Makefile 代码:

CPPFLAGS = -I../../include
CFLAGS = 
LDFLAGS = -L../../lib -L../../lib64
LIBS = -lbsapi

Biometry: main.c
    $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) main.c -o Biometry $(LIBS)

我想要添加的库带有一个 .h 文件和一个 .c 文件。我已将它们添加到 ../../include 目录中,并确保将其添加到我的代码中,位于前一个 #include

的正下方
#include <tpl.h>

我不确定我错过了什么?在添加该库之前程序运行正常。

最佳答案

库通常首先构建并安装到您的系统中,因此您可以稍后将它们添加到 Makefile 中的 LIBS 中(假设您的库名为“foo”,- lfoo)。

所以你有两个选择:

  1. “这实际上名副其实的库”路径:查找或编写一个 Makefile 将 foo.c 转换为 libfoo.so,安装它,然后使用LIBS= -lbsapi -lfoo,或
  2. “我将源代码包含在我的源代码中,并希望一切都能正确构建”路径:将 foo.o 添加到 Biometry 需要的内容中,并添加有关如何进行操作的配方从 foo.c 构建 foo.o,并将 foo.c 添加到您的源中:
CPPFLAGS = -I../../include
CFLAGS = 
LDFLAGS = -L../../lib -L../../lib64
LIBS = -lbsapi

Biometry: main.c foo.o
    $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) main.c foo.o -o Biometry $(LIBS)

foo.o: foo.c
     $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) foo.c -o foo.o $(LIBS)

关于c - 如何将库添加到 make 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38597420/

相关文章:

c - printf 宽度说明符的类型

c++ - boost 和 cpp-netlib 使编译错误

c - makefile 中无法识别规则?

makefile - Docker 与 make : build image on Dockerfile change

c - 使用 AVX2 查找元素索引 - 代码优化

c - C中简单管道通信的问题

c - Linux共享内存段错误

unix - 将 nmake 转换为 make

bash - 如何在 Makefile 中设置环境变量来运行测试?

c - 如果我使用 mmap 而不是 malloc 分配内存会怎样?