在单片机的ide里这些都是不需要我们操心的,但是在Linux环境下都是需要手动控制的。因此只能手动进行单步处理。
每一步都要自己处理太麻烦了,所以出现了makefile 和 cmake,本次简单提下makefile。
makefile是把这个过程用某种方式有规律的规则进行,比手动一个一个简单了一点点。
下面是makefile文件
OBJS = file1.o file2.o
CC = gcc
CFLAGS = -Wall -O -g
helloworld : $(OBJS)
$(CC) $(OBJS) -o helloworld
file1.o : file1.c file2.h
$(CC) $(CFLAGS) -c file1.c -o file1.o
file2.o : file2.c file2.h
$(CC) $(CFLAGS) -c file2.c -o file2.o
clean:
rm -rf *.o helloworld
在Linux输入make指令时,就按照预先写好的makefile一步一步进行的
像上面的第一步就会变成
#因为这里需要.o文件,但是这个文件会在下面指令生成,会自动先执行下面得到.o文件
gcc file1.o file2.o -o helloworld
此时.o文件还没有生成,依赖关系会自动生成
gcc -c file1.c -o file1.o
gcc -c file2.c -o file2.o
-c
是参数,编译和汇编,但不链接
上面最开始的图,最后一步是链接,不链接肯定无法使用,因此,手动敲命令则是
gcc file1.c -o file1 //举例单个文件情况
-o
是指定输出文件,如果不指定,则会生成默认的文件名,比如a.out
,类似另存为操作。
中间过程的-E -s
省略了,内部完成了
实际上可以直接敲命令也是可行的,如果不嫌弃烦的话。