c - Makefile 难点

标签 c makefile

Makefiles 让我感到困惑。我想要做的就是将一些函数分离到一个单独的文件中,但我无法编译它。我错过了什么?谢谢!

生成文件:

all: clientfunctions client

clientfunctions.o: clientfunctions.c
    gcc -c clientfunctions.c -o clientfunctions.o

client.o: client.c clientfunctions.o
    gcc -c client.c -o client.o

client: client.o
    gcc client.o -o client

.c 和.h 文件也很简单:

客户端函数.h

#ifndef _clientfunctions_h
#define _clientfunctions_h
#endif

void printmenu();

客户端函数.c

#include <stdio.h>
#include "clientfunctions.h"

void printmenu() {
    fprintf(stdout, "Please select one of the following options\n");
}

客户端.c

#include "clientfunctions.h"

int main (int argc, char * argv[])
{
    printmenu();
    return 0;
}

这是我遇到的错误:

架构 x86_64 的 undefined symbol : “_main”,引用自: 主可执行文件的隐式入口/启动 ld: 找不到体系结构 x86_64 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) make: *** [clientfunctions] 错误 1

最佳答案

尝试以下操作。

all: client

clientfunctions.o: clientfunctions.c
    gcc -c clientfunctions.c -o clientfunctions.o

client.o: client.c 
    gcc -c client.c -o client.o

client: client.o clientfunctions.o
    gcc client.o clientfunctions.o -o client

这里是编写此 Makefile 的更惯用的方法。

all: client

client: client.o clientfunctions.o
    $(CC) -o $@ $^

关于c - Makefile 难点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18598903/

相关文章:

c - 从命令行 (Mac) 生成的 .dSYM 文件

c - C 中的自然排序 - "array of strings, containing numbers and letters"

c - 为什么 mex.h 中有一些错误?

c++ - gtest - 对 `testing::InitGoogleTest(int*, char**)' 的 undefined reference

c++ - 如何链接到 libtool static la 库?

c++ - 构建 nginx 和 OpenSSL 时出错

c - 执行家族

c - 从二进制文件中读取非固定长度(C)

c - 十六进制到 Ascii 转换 C

c - 如何为我的 C 项目创建 makefile?