关于c:如何编译多个c文件

65次阅读

共计 840 个字符,预计需要花费 3 分钟才能阅读完成。

编译多文件

咱们有以下三个文件
file1.c

#include "stdio.h"
#include "file2.h"

int main(void){printf("%s:%s:%d\n", __FILE__, __FUNCTION__, __LINE__);
    foo();
    return 0;
}

file2.h

void foo(void);

file2.c

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

void foo(void) {printf("%s:%s:%d \n", __FILE__, __FUNCTION__, __LINE__);
    return;
}

执行 gcc file1.c file2.c -o server 生成可执行程序 server, 执行./server 咱们能够失去以下输入

file1.c:main:5
file2.c:foo:5

这样就能够编译多文件的程序了。linux 下还须要 make 程序来自动化编译等操作。增加 Makefile 文件

server : file1.o file2.o
        $(CC) -o $@ $^

.PHONY: clean
clean:
        rm *.o server

执行 make, 就能编译程序了。执行make clean 就会删除make 产生的临时文件。
Makefile 有以下模式

target: require
    action

其中 target 时产物,require 时生成 target 的依赖。action 是动作,能够是编译程序的动作,也可能是输入些信息。
下面的例子中 target 是 server, 依赖是 file1.o, file2.o。make 会主动 .o 文件执行 cc -c .c -o *.o 命令。下面例子中执行cc -c file1.c -o file1.occ -c file2 -o file2.o。$(CC) 是内置变量,linux 下会解释成 cc。$@是 target, $^ 是 require。这样就能生成可执行程序 server 了。
上面加了个clean, 因为不是真正的文件,须要用.PHONY: clean 阐明是伪文件。

参考

如何编译 c 程序

正文完
 0