c - 如何在 C Makefile 中使用外部库和头文件?

标签 c makefile static-libraries external

我在目录 1 中有一个头文件 myheader.h 和一个静态库 libmylib.a 文件。在 directory2 中,我正在编写一个使用它们的程序。假设我在 directory2 中有 main.c,它使用 myheader.h 和 libmylib.a。如何创建 Makefile 来编译和链接它们?

现在,在我的 main.c 中,我添加了

#include "../directory1/myheader.h"

这是我目前的 Makefile:

CC = gcc

INCLUDES = -I

CFLAGS = -g -Wall $(INCLUDES)

main: main.o ../directory1/libmylib.a
    $(CC) main.o ../directory1/libmylib.a -o main

main.o: main.c ../directory1/myheader.h
    $(CC) $(CFLAGS) -c main.c

我收到以下警告:

gcc -g -Wall -I -c main.c
/home/me/directory2/main.c:72: undefined reference to `foo'
collect2: ld returned 1 exit status
make: *** [main.o] Error 1

其中 foo 是库中的函数之一。

最佳答案

好的。修复它。

我删除了 #include "../directory1/myheader.h" 并将其替换为 #include "myheader.h"

然后在 Makefile 中,我使用了:

CC = gcc

INCLUDES = -I../directory1

CFLAGS = -g -Wall $(INCLUDES)

LDFLAGS = -L../directory1

main: main.o ../directory1/libmylib.a
    $(CC) main.o $(LDFLAGS) -lmylib -o main

main.o: main.c ../directory1/myheader.h
    $(CC) $(CFLAGS) -c main.c

关于c - 如何在 C Makefile 中使用外部库和头文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15045748/

相关文章:

c++ - C 和 C++ 原子之间的互操作性

Makefile 中的变量

c++ - 使用 make 构建我的项目

c++ - 如何在 Visual Studio 2008 中使用 inl 文件创建静态库?

c++ - MSVC 链接到调试版本中的发布库而不是调试版本

c - C 中的双指针常量正确性警告

c - Unix:在C中复制具有原始权限的文件

C、rand 函数不能与 sleep() 函数一起正常工作

makefile - 将 Asterisk 升级到 14 时出错 - PJSIP 未声明

c++ - 知道哪个编译器用 C++ 生成特定的二进制文件至关重要吗?