1.选择哪个编译器CC。比如CC:=gcc
2.使用的cpu类型CFLAGS1,CFLAGS2。这个错了会有提示,我虚拟器就用corei7就OK
cc1: error: bad value (‘armv4t’) for ‘-march=’ switch
cc1: note: valid arguments to ‘-march=’ switch are: nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 bonnell atom silvermont slm knl x86-64 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 btver1 btver2
3.引导文件sourmain,即有main函数的文件。比如sourmain=uart_main.c
4.编译生成输出的文件名exes。比如exes=out
#号开头的是注释
运行一下./out
成功了。
以下范例中
main函数所在文件uart_main.c
输出可执行文件out,outarm47,outarm433
范例(i5模版,windows 里装linux虚拟机)
CC:=gcc
#CC:=/usr/arm/arm-linaro-arm-linux-gnueabihf-4.7/bin/arm-linux-gnueabihf-gcc
#CC:=/usr/arm/arm-none-linux-gnueabi-4.3.3/4.3.3/bin/arm-none-linux-gnueabi-gcc
#CC:=gcc
AR:=ar -rc
#CFLAGS1:=-Wall -g -liconv -lpthread -lrt -ldl -march=armv4t -c
#CFLAGS2:=-Wall -g -lrt -ldl -lpthread -march=armv4t -lm -o
CFLAGS1:=-Wall -g -liconv -lpthread -lrt -ldl -march=corei7 -c
CFLAGS2:=-Wall -g -lrt -ldl -lpthread -march=corei7 -lm -o
SRC = $(wildcard src/*.c) $(wildcard src/lt5189/*.c)
SRO = $(wildcard src/*.o) $(wildcard ./*.o)
sourmain=uart_main.c
objects =libkjdh.a
USERSRO=$(wildcard lib/tmp/*.o)
objectlib=$(wildcard lib/libkjdh.a)
exes=out
all:
#@echo $(SRC)
#$(CC) $(SRC) $(CFLAGS1)
#@echo $(SRO)
#@cp $(SRO) ./lib/tmp
#$(AR) $(objects) $(SRO)
#@cp $(objects) ./lib
#$(CC) $(sourmain) $(objects) -L. -static -o $(exes)
# $(CC) $(sourmain) $(objectlib) $(CFLAGS2) $(exes)
$(CC) $(sourmain) $(SRC) $(CFLAGS2) $(exes)
#@rm -vf $(SRO) $(objects)
lib:
$(CC) $(SRC) $(CFLAGS1)
@mkdir lib/tmp -p
$(AR) $(objects) $(SRO)
@mv $(objects) ./lib
# @cp $(SRO) ./lib/tmp
@rm -vf $(SRO)
@mv *.o ./lib/tmp
clean:
@rm -vf $(exes)
@rm -vf $(objects)
@rm -vf $(SRO)
@rm -vf -R ./lib/
范例(模版S3C2440)
#CC:=/usr/arm/arm-linaro-arm-linux-gnueabihf-4.7/bin/arm-linux-gnueabihf-gcc
CC:=/usr/arm/arm-none-linux-gnueabi-4.3.3/4.3.3/bin/arm-none-linux-gnueabi-gcc
#CC:=gcc
AR:=ar -rc
CFLAGS1:=-Wall -g -liconv -lpthread -lrt -ldl -march=armv4t -c
CFLAGS2:=-Wall -g -lrt -ldl -lpthread -march=armv4t -lm -o
#CFLAGS1:=-Wall -g -liconv -lpthread -lrt -ldl -march=armv7 -c
#CFLAGS2:=-Wall -g -lrt -ldl -lpthread -march=armv7 -lm -o
SRC = $(wildcard src/*.c) $(wildcard src/lt5189/*.c)
SRO = $(wildcard src/*.o) $(wildcard ./*.o)
sourmain=uart_main.c
objects =libkjdh.a
USERSRO=$(wildcard lib/tmp/*.o)
objectlib=$(wildcard lib/libkjdh.a)
exes=outarm433
all:
#@echo $(SRC)
#$(CC) $(SRC) $(CFLAGS1)
#@echo $(SRO)
#@cp $(SRO) ./lib/tmp
#$(AR) $(objects) $(SRO)
#@cp $(objects) ./lib
#$(CC) $(sourmain) $(objects) -L. -static -o $(exes)
# $(CC) $(sourmain) $(objectlib) $(CFLAGS2) $(exes)
$(CC) $(sourmain) $(SRC) $(CFLAGS2) $(exes)
#@rm -vf $(SRO) $(objects)
lib:
$(CC) $(SRC) $(CFLAGS1)
@mkdir lib/tmp -p
$(AR) $(objects) $(SRO)
@mv $(objects) ./lib
# @cp $(SRO) ./lib/tmp
@rm -vf $(SRO)
@mv *.o ./lib/tmp
clean:
@rm -vf $(exes)
@rm -vf $(objects)
@rm -vf $(SRO)
@rm -vf -R ./lib/
范例(模版LPC1759-58-56-54-52-51)
CC:=/usr/arm/arm-linaro-arm-linux-gnueabihf-4.7/bin/arm-linux-gnueabihf-gcc
#CC:=/usr/arm/arm-none-linux-gnueabi-4.3.3/4.3.3/bin/arm-none-linux-gnueabi-gcc
#CC:=gcc
AR:=ar -rc
#CFLAGS1:=-Wall -g -liconv -lpthread -lrt -ldl -march=armv4t -c
#CFLAGS2:=-Wall -g -lrt -ldl -lpthread -march=armv4t -lm -o
CFLAGS1:=-Wall -g -liconv -lpthread -lrt -ldl -march=armv7 -c
CFLAGS2:=-Wall -g -lrt -ldl -lpthread -march=armv7 -lm -o
SRC = $(wildcard src/*.c) $(wildcard src/lt5189/*.c)
SRO = $(wildcard src/*.o) $(wildcard ./*.o)
sourmain=uart_main.c
objects =libkjdh.a
USERSRO=$(wildcard lib/tmp/*.o)
objectlib=$(wildcard lib/libkjdh.a)
exes=outarm47
all:
#@echo $(SRC)
#$(CC) $(SRC) $(CFLAGS1)
#@echo $(SRO)
#@cp $(SRO) ./lib/tmp
#$(AR) $(objects) $(SRO)
#@cp $(objects) ./lib
#$(CC) $(sourmain) $(objects) -L. -static -o $(exes)
# $(CC) $(sourmain) $(objectlib) $(CFLAGS2) $(exes)
$(CC) $(sourmain) $(SRC) $(CFLAGS2) $(exes)
#@rm -vf $(SRO) $(objects)
lib:
$(CC) $(SRC) $(CFLAGS1)
@mkdir lib/tmp -p
$(AR) $(objects) $(SRO)
@mv $(objects) ./lib
# @cp $(SRO) ./lib/tmp
@rm -vf $(SRO)
@mv *.o ./lib/tmp
clean:
@rm -vf $(exes)
@rm -vf $(objects)
@rm -vf $(SRO)
@rm -vf -R ./lib/