首页 > 系统相关 >嵌入式Linux中Makefile万能写法

嵌入式Linux中Makefile万能写法

时间:2023-02-01 22:33:37浏览次数:38  
标签:%. KDIR Linux Makefile 指定 嵌入式 编译 linux OBJ


嵌入式Linux中Makefile万能写法


对于linux系统中使用gcc进行编译:

# 列出当前目录下所有*.c文件
SRC := $(wildcard *.c)

# 将所有*.c文件转为*.o文件
OBJ := $(patsubst %.c, %.o, $(SRC))

# 指定编译器
CC = gcc

# 指定链接器
CCLINK = g++

# 指定编译属性
CFLAGS = -g -Wall

# 指定编译输出的可执行程序名称
OUTNAME := helloworld

all: $(OBJ)
$(CCLINK) $(CFLAGS) $^ -o $(OUTNAME)

$(OBJ): %.o:%.c
$(CC) $(CFLAGS) -c $^ -o $@

.PHONY:clean
clean:
rm *.o $(OUTNAME)

对于嵌入式linux使用交叉编译器进行编译:

SRC := ${wildcard *.c}
OBJ := ${patsubst %.c, %.o, $(SRC)}

CC = arm-linux-gcc
CCLINK = arm-linux-ld
CFLAGS = -g -c -Wall

all: $(OBJ)
$(CCLINK) -Wall $^ -o all.bin

$(OBJ): %.o:%.c
$(CC) $(CFLAGS) $^ -o $@

.PHONY:clean
clean:
rm *.o all all.bin

对于linux编译模块:

# 指定模块名称
obj-m := helloworld.o

# 指定内核源码目录
KDIR := /lib/modules/$(shell uname -r)/build

# 指定将编译输出到当前目录
PWD := $(shell pwd)

all:
make -C $(KDIR) M=$(PWD) modules

.PHONY:clean
clean:
make -C $(KDIR) M=$(PWD) modules clean

对于嵌入式linux编译模块:

# 指定模块名称
obj-m := helloworld.o

# 指定编译平台
ARCH := arm

# 指定交叉编译器
CROSS_COMPILE := arm-linux-

# 指定内核源码目录
KDIR := /opt/embeded/dts-demo/linux-4.0.1

# 指定将编译输出到当前目录
PWD := $(shell pwd)

all:
make ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KDIR) M=$(PWD) modules

.PHONY:clean
clean:
make -C $(KDIR) M=$(PWD) modules clean


标签:%.,KDIR,Linux,Makefile,指定,嵌入式,编译,linux,OBJ
From: https://blog.51cto.com/u_15950551/6031947

相关文章

  • Linux 中使用 echo 修改用户密码
    前戏使用echo命令,可以实现很方便、快捷地修改用户密码使用方法语法#echopassword|passwd--stdinusername示例#echo"123456"|passwd--stdinrootChangingpasswor......
  • Linux CPU亲和性
    CPU亲合力就是指在linux系统中能够将一个或多个进程绑定到一个或多个处理器上运行。一个进程的CPU亲合力掩码决定了该进程将在哪个或哪几个CPU上运行。在一个多处理器系统......
  • 二、Linux常用命令
    一、文件和目录操作相关命令(重点)pwd:查看当前所在的路径位置(涉及到路径切换(cd命令)时,确认路径时使用)ls:查看当前路径下有哪些文件(对路径下文件进行了修改(......
  • Linux密钥认证
    网站集群批量管理-秘钥认证一、概述管理更加轻松:两个节点,通过秘钥形式进行访问,不需要输入密码,单向应用场景:一些服务在使用前要求做秘钥认证手动写批量管理脚本名字:秘......
  • 【嵌入式】ChipON IDE编程格式
    C文件头模板/***@file:KeyFunction.c*@copyright:Copyright2020-2021SGMW.Co.Ltd.AllRightsReserved.*@brief:按键模块*@detail:涉及按键识别,以及按键按下......
  • Linux实时同步
    实时同步一、概述背景:以前,通过rsync+定时任务实现对文件的定时备份/同步现在,对于NFS来说,需要进行实时同步选择:分布式存储使用实时同步服务+NFS选择公有云对象......
  • linux离线部署python项目
    离线部署直接在内网隔离的环境中。不能直接pipinstall或者apt-getinstall(Ubuntu、Debain)准备:与离线环境相同版本的服务器Python(web)项目依赖pipwheel强大的pip命......
  • 【嵌入式】微芯旺KungFu32A156MQT点灯程序
    编译器:ChipON32IDEKF32首先添加A156MQT启动代码然后添加库 然后在项目设置内添加编译路径  以下是点灯代码:#include"system_init.h"#include"kf32a156_gp......
  • 嵌入式必看!全志T113-i+玄铁HiFi4核心板硬件说明资料分享
    目录1硬件资源2引脚说明(篇幅问题,暂不提供详细内容)3电气特性4机械尺寸5底板设计注意事项硬件资源SOM-TLT113核心板板载CPU、ROM、RAM、晶振、电源、LED等硬件......
  • linux 操作系统升级 Python 3
    #进入python官网下载对应版本,比如:Python-3.7.12[root@localhost~]#wget​​https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tgz​​#安装依赖包[root@localh......