关于makefile编译gcc程序的写法 简单只看4点就会了 芯片i5,S3C2440,LPC1759-58-56-54-52-51的makefile模版
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 -oCFLAGS1:=-Wall -g -liconv -lpthread -lrt -ldl -march=corei7 -c
CFLAGS2:=-Wall -g -lrt -ldl -lpthread -march=corei7 -lm -oSRC = $(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-gccCC:=/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 -oSRC = $(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 -oCFLAGS1:=-Wall -g -liconv -lpthread -lrt -ldl -march=armv7 -c
CFLAGS2:=-Wall -g -lrt -ldl -lpthread -march=armv7 -lm -oSRC = $(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/
关于makefile编译gcc程序的写法 简单只看4点就会了 芯片i5,S3C2440,LPC1759-58-56-54-52-51的makefile模版相关推荐
- Ubuntu系统下C语言的简单使用及gcc和Makefile编译C程序
Ubuntu18.04系统用C语言的编程. 一.网络设置 1. 下载 Ubuntu 18.04 2.下载 VMware Workstation 3.安装虚拟机 二.更换apt源 1.查看ubuntu的 ...
- 使用gcc以及makefile编译C程序
文章目录 一. gcc编译C程序 1. ubuntu 18.04下使用gcc编译C程序 2. window10下使用gcc编译C程序 二. win10下使用编译软件编译C程序 三. makefile方 ...
- linux gcc 静态编译,GCC 程序编译的静态链接和动态链接
(给Linux爱好者加星标,提升Linux技能)转自:Mr_Bluyee 在链接阶段中,所有对应于源文件的 .o 文件.'-l' 选项指定的库文件.无法识别的文件名(包括指定的.o目标文件和.a库文件 ...
- Makefile万能写法(gcc程序以及arm-linux-gcc程序)-转
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://7071976.blog.51cto.com/7061976/1322211 在l ...
- linux gcc生成可执行代码命令,Makefile万能写法(gcc程序以及arm-linux-gcc程序)
在linux下使用gcc 编译时,Makefile的万能写法 ,每次只需更改要生成的目标文件名称(test)尽可: objs := $(patsubst %c, %o, $(shell ls *.c) ...
- C语言程序makefile编译过程
C语言程序makefile编译过程 2022-0111 blog_010 makefile是一些大型linux下开发的项目经常会用到的编译脚本: 可以将makefile理解为类似shell一样的脚本语 ...
- c语言conflicting types,gcc编译C程序出现”error conflicting types for function”编译错误的分析解决...
今天使用gcc编译C语言程序时出现 "error conflicting types for function" 编译错误,这个错误的原因是什么?如何解决?以下看正文的讲解. 在使 ...
- 【嵌入式开发】gcc 学习笔记(一) - 编译C程序 及 编译过程
一. C程序编译过程 编译过程简介 : C语言的源文件 编译成 可执行文件需要四个步骤, 预处理 (Preprocessing) 扩展宏, 编译 (compilation) 得到汇编语言, 汇编 (a ...
- An Introduction to GCC - 2 Compiling a C program (编译 C 程序)
An Introduction to GCC - 2 Compiling a C program (编译 C 程序) for the GNU Compilers gcc and g++ Brian G ...
最新文章
- oracle 11g中密码过期问题
- oracle树形语句
- 如何制作LINUX的patch文件及如何打patch
- 众所周知,YouTube是个学习网站
- 【转载】用Snort巧妙检测SQL注入和跨站脚本攻击
- stm32正交编码器 原理图_恶劣环境下应用的电感式增量编码器和绝对编码器
- OpenCV学习:仿射变换+投射变换+单应性矩阵
- 被人推荐频率最高的书Top10
- _GUN_SOURCE宏
- Leetcode每日一题:203.remove-linked-list-elements(移除链表元素)
- 求二叉树的深度(C++)
- Android 对应的xml配置值,颜色表
- centos7 split 切割文件_CentOS 大文件夹按固定块大小分割打包实验
- NIVC-gt;IPR[IPADDR]
- Java基本类型与类型转换咋就这么烦?
- pmp第六版一到三章笔记
- LiveGBS流媒体平台GB/T28181常见问题-海康大华宇视监控设备安防摄像头等设备注册不上来如何检查问题?
- python太阳花画法_Python——教你画朵太阳花
- Apache Ranger安全区介绍
- mybatis自联表三级菜单