gcc编译器是很常用的编译器,有固定的命令,这里只说常用的内容。
gcc --version
-o只是指定输出文件名,不指定的话就用默认名字。
gcc -c main.c -o main.o
$ ar rcs libmain.a main.o
gcc main.c test.c -o main #一步生成可执行文件
增加头文件有两种方法,常用的是加-I来指定头文件目录。
- gcc main.c -I ./inc -o main
- #inc包含所有所需文件
- #inc是个路径,可以是很多个路径加起来,每个路径前面都要加-I
- gcc -llib test.c
- #库文件名为lib
- INC = -I$(INC_DIR)
-
- OBJ_FILES_C = $(OBJ_DIR)/main.o
-
- $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
- $(CC) $(INC) $(OPT) -c $< -o $@
或者这种
- $%.o : %.c
- $(CC) $< $(CFLAGS)
- #CFLAGS里面有-I头文件路径
- $(CURRENT_APPL_NAME).a: $(OBJS)
- $(AR) rcs $@ $(OBJS)
- #OBJS就是很多个.o文件
1、不同的芯片或者平台、环境有自己一套独有的编译方法,所以就有针对自身的一套编译工具,不同的编译工具之间是不能混用的。别看RH850芯片里面的gcc跟MinGW32里面的gcc名字是一样的,但是里面的内容千差万别,调用到的dll库文件也不一样。
譬如用MinGW32里面的gcc去编译RH850的源代码,就会提示下列错误。这中断的使能和使能在MinGW32完全没这概念,它一看到汇编就蒙了。
2、同一个平台的gcc应该是可以混用的,需要在配置项里面进行配置。
RH850的芯片就有这么个常规配置,指定cpu型号,估计换个芯片只需要在这里换上新的芯片名字就行。
COMMONFLAGS = -cpu=rh850g3kh