当前位置: 首页 > news >正文

【ARM 嵌入式 编译 Makefile 系列 18 -- Makefile 中的 export 命令详细介绍】

文章目录

    • Makefile 中的 export 命令详细介绍
      • Makefile 使用 export
      • 导出与未导出变量的区别
      • 示例:导出变量以供子 Makefile 使用

Makefile 中的 export 命令详细介绍

在 Makefile 中,export 命令用于将变量从 Makefile 导出到由 Makefile 启动的子进程的环境中。这通常在你需要在 Makefile 中设置环境变量,并确保这些变量在编译过程中启动的任何子 shell 或程序中都是可用的情况下使用。

当你在 Makefile 中导出一个变量时,任何由 make 启动的子进程(比如调用的 shell 脚本或其他程序)都将能够访问该环境变量。

Makefile 使用 export

export 语句通常写在 Makefile 的顶部,但也可以放在 Makefile 中的任何位置。以下是几个 export 的使用示例:

# 导出单个变量 
export CFLAGS=-O2 # 导出多个变量 
export CC=gcc export CXX=g++ # 使用等号赋值并导出 
export LDFLAGS = -L/usr/local/lib # 使用条件赋值(若未定义则赋值)并导出 
export LIBS ?= -lm # 导出所有之前定义的变量 
export

在上面的示例中,我们导出了多个编译器和链接器选项。这意味着当 make 启动编译命令或其他子进程时,这些变量会成为子进程的环境变量。

导出与未导出变量的区别

如果一个变量没有被导出,那么它只在当前的 Makefile 及其包含的 Makefile 中可用。子进程和子 shell 无法访问未导出的变量。只有被明确导出的变量才能够在子进程的环境中被检测到。

示例:导出变量以供子 Makefile 使用

假设你有一个顶层 Makefile 和一个或多个子目录,每个子目录都有自己的 Makefile。你希望顶层的 Makefile 中的变量对子 Makefile 也是可见的。

export CFLAGS=-O2 
export LDFLAGS=-L/usr/local/lib all: $(MAKE) -C subdir

在这个例子中,CFLAGSLDFLAGS 被导出到环境中,所以当顶层 Makefile 调用 subdir 目录中的 Makefile 时,subdir 的 Makefile 将能够访问这些环境变量。

在子 Makefile 中,你可以直接使用这些变量,就像它们是在本地定义的一样:

# 子目录的 Makefile 
all: gcc $(CFLAGS) main.c -o main $(LDFLAGS) 

子 Makefile 将使用从顶层 Makefile 继承的 CFLAGSLDFLAGS 变量值。

export 命令在 Makefile 中非常有用,它允许你定义全局环境变量,这些变量可以在整个编译过程中的所有子进程中被访问。这样可以确保环境的一致性,并可以简化复杂项目中 Makefile 的管理。

相关文章:

【ARM 嵌入式 编译 Makefile 系列 18 -- Makefile 中的 export 命令详细介绍】

文章目录 Makefile 中的 export 命令详细介绍Makefile 使用 export导出与未导出变量的区别示例:导出变量以供子 Makefile 使用 Makefile 中的 export 命令详细介绍 在 Makefile 中,export 命令用于将变量从 Makefile 导出到由 Makefile 启动的子进程的环…...

【opencv】计算机视觉:停车场车位实时识别

目录 目标 整体流程 背景 详细讲解 目标 我们想要在一个实时的停车场监控视频中,看看要有多少个车以及有多少个空缺车位。然后我们可以标记空的,然后来车之后,实时告诉应该停在那里最方便、最近!!!实现…...

播放器开发(三):FFmpeg与SDL环境配置

学习课题:逐步构建开发播放器【QT5 FFmpeg6 SDL2】 环境配置 我这边的是使用macOS;IDE用的是CLion;CMake构建,除了创建项目步骤、CMakeLists文件有区别之外的代码层面不会有太大区别。 配置上只添加一下CMakeLists中FFmpeg和SD…...

KubeVela核心控制器原理浅析

前言 在学习 KubeVela 的核心控制器之前,我们先简单了解一下 KubeVela 的相关知识。 KubeVela 本身是一个应用交付与管理控制平面,它架在 Kubernetes 集群、云平台等基础设施之上,通过开放应用模型来对组件、云服务、运维能力、交付工作流进…...

迎接“全全闪”时代 XSKY星辰天合发布星海架构和星飞产品

11 月 17 日消息,北京市星辰天合科技股份有限公司(简称:XSKY星辰天合)在北京首钢园举办了主题为“星星之火”的 XSKY 星海全闪架构暨星飞存储发布会。 (图注:XSKY星辰天合 CEO 胥昕) XSKY星辰天…...

[架构相关]基础架构设计原则

基础架构设计原则 文章目录 基础架构设计原则一、可用性(Availability)1.1、引入冗余1.2、负载均衡1.3、故障转移1.4、备份和恢复策略 二、可扩展性(Scalability)2.1 水平扩展2.2 垂直扩展2.3 弹性扩展 三、可靠性(Rel…...

测试在 Oracle 下直接 rm dbf 数据文件并重启数据库

创建一个新的表空间并创建新的用户,指定新表空间为新用户的默认表空间 create tablespace zzw datafile /oradata/cesdb/zzw01.dbf size 10m;zzw用户已经创建过,这里修改其默认表空间 alter user zzw quota unlimited on zzw; alter user zzw default …...

【开源】基于JAVA的计算机机房作业管理系统

项目编号: S 017 ,文末获取源码。 \color{red}{项目编号:S017,文末获取源码。} 项目编号:S017,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 登录注册模块2.2 课程管理模块2.3 课…...

Ubuntu 配置静态 IP

Ubuntu 18 开始可以使用netplan配置网络。配置文件位于/etc/netplan/xxx.yaml中,netplan默认是使用NetworkManager来配置网卡信息的。 修改配置文件: 1、打开文件编辑:sudo vi 01-network-manager-all.yaml原文件内容如下:netwo…...

Spring Cloud实战 |分布式系统的流量控制、熔断降级组件Sentinel如何使用

专栏集锦,大佬们可以收藏以备不时之需 Spring Cloud实战专栏:https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏:https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏:https:/…...

第六届 传智杯初赛B组

文章目录 A. 字符串拼接🍻 AC code B. 最小差值🍻 AC code C. 红色和紫色🍻 AC code D. abb🍻 AC code E. kotori和素因子🍻 AC code F. 红和蓝🍻 AC code 🥰 Tips:AI可以把代码从 j…...

文档向量化工具(二):text2vec介绍

目录 前言 text2vec开源项目 核心能力 文本向量表示模型 本地试用 安装依赖 下载模型到本地(如果你的网络能直接从huggingface上拉取文件,可跳过) ​运行试验代码 前言 在上一篇文章中介绍了,如何从不同格式的文件里提取…...

vscode中pylance无法显示outline无法跳转

当打开的workspce中有较多的文件时,pylance需要分析的文件太多,导致卡住,无法分析到对应的python文件 常见的情况是,当我们在workspace中包含了data文件夹(通常是通过软连接方式把数据集链接过来)&#xf…...

番外篇之通讯录

前言:用到的知识点有枚举、结构体、数组,快速排序(用的名字排序) 下面是测试函数: test.c #define _CRT_SECURE_NO_WARNINGS 1 #include"contact.h" void menu() {printf("*************************…...

学生信息管理系统程序Python

系统主界面 在该界面中可以选择要使用功能对应的菜单进行不同的操作。在选择功能菜单时,有两种方法, 一种是输入1,另一种是按下键盘上的↑或↓方向键进行选择。这两种方法的结果是一样的,所以使用哪种方法都可以。 (…...

[js] for forEach for of 循环里await关键字的用法

1、for&#xff1a;循环中使用await的写法&#xff08;生效&#xff09; async function loop(){for( let i0; i<array.length; i ){let datas await getDatas()break} }2、forEach&#xff1a;循环中使用await的写法&#xff08;不生效&#xff09;&#xff1a; array.f…...

Linux面试题(二)

目录 17、怎么使一个命令在后台运行? 18、利用 ps 怎么显示所有的进程? 怎么利用 ps 查看指定进程的信息&#xff1f; 19、哪个命令专门用来查看后台任务? 20、把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令? 21、终止进程用什么命令…...

电源控制系统架构(PCSA)之系统控制处理器组件

目录 6.4 系统控制处理器 6.4.1 SCP组件 SCP处理器Core SCP处理器Core选择 SCP处理器核内存 系统计数器和通用计时器 看门狗 电压调节器控制 时钟控制 系统控制 信息接口 电源策略单元 传感器控制 外设访问 系统访问 6.4 系统控制处理器 系统控制处理器(SCP)是…...

《已解决: ImportError: Keras requires TensorFlow 2.2 or higher 问题》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页: &#x1f405;&#x1f43e;猫头虎的博客&#x1f390;《面试题大全专栏》 &#x1f995; 文章图文并茂&#x1f996…...

在 CentOS 7 上安装 MySQL 8

在 CentOS 7 上安装 MySQL 8 步骤 1: 添加 MySQL Yum 存储库 首先&#xff0c;我们需要添加 MySQL Yum 存储库。打开终端并执行以下命令&#xff1a; sudo yum install -y https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm步骤 2: 导入 MySQL GPG 公钥 …...

网约摩的席卷县城:2公里收费超网约车,外卖员排队加入引争议

2026年春&#xff0c;一场由“网约摩的”掀起的出行变革正席卷广东、湖南多地县城。在茂名、乐昌、衡东等地&#xff0c;一款名为“摩的一下”的网约摩托车平台悄然上线&#xff0c;其定价模式引发热议&#xff1a;起步价6元/2公里&#xff0c;折合每公里高达3元&#xff0c;短…...

LangFlow从安装到实战:可视化搭建多智能体应用完整教程

LangFlow从安装到实战&#xff1a;可视化搭建多智能体应用完整教程 1. LangFlow简介 LangFlow是一款革命性的低代码AI应用构建工具&#xff0c;它通过可视化界面让开发者能够像搭积木一样快速组合各种AI组件。无论你是想构建智能客服、文档分析系统还是多智能体协作应用&…...

netsh interface portproxy实战:Windows本地端口转发与虚拟IP配置全解析

1. 为什么需要Windows本地端口转发&#xff1f; 很多开发者都遇到过这样的场景&#xff1a;你在本地机器上跑了一个Web服务&#xff0c;监听的是127.0.0.1:8080&#xff0c;这时候同一局域网的其他设备想要访问这个服务&#xff0c;直接输入你的IP地址加端口是访问不了的。这是…...

新手必看:实时口罩检测-通用镜像使用指南,快速实现防疫检测功能

新手必看&#xff1a;实时口罩检测-通用镜像使用指南&#xff0c;快速实现防疫检测功能 1. 引言&#xff1a;为什么选择这个口罩检测方案 在公共场所实施防疫检测时&#xff0c;快速准确识别口罩佩戴情况是关键需求。传统人工检查方式效率低且容易遗漏&#xff0c;而从头开发…...

从R-JPEG到温度热图:手把手教你用大疆TSDK和Pix4D mapper生成红外正射影像

从R-JPEG到温度热图&#xff1a;大疆TSDK与Pix4D mapper红外正射影像全流程解析 在农业病虫害监测、电力设备巡检、建筑热工缺陷检测等领域&#xff0c;红外热成像技术正逐渐成为行业标配。但单张红外照片的温度分析存在视角局限&#xff0c;而传统热像仪又难以实现大范围精准测…...

清算波普尔:终结107年学术诈骗的真理清场行动

清算波普尔&#xff1a;终结107年学术诈骗的真理清场行动摘要波普尔通过“名词动量化”将“科学&#xff08;真理结果&#xff09;”偷换为“科学探索&#xff08;试错过程&#xff09;”&#xff0c;制造了长达107年的学术诈骗。他以“过程即科学”为幌子&#xff0c;用无限试…...

SITS2026圆桌绝密推演(首次对外释放):当算力成本年降37%,AI原生研发的ROI拐点已提前至第8.2个月——附5步校准路径

第一章&#xff1a;SITS2026圆桌&#xff1a;AI原生研发的投资回报 2026奇点智能技术大会(https://ml-summit.org) 从成本中心到价值引擎的范式迁移 传统研发效能度量聚焦于人天、代码行数与缺陷率&#xff0c;而AI原生研发将核心指标转向“模型驱动交付周期”&#xff08;MD…...

前端团队协作:别让沟通成本拖垮你的项目

前端团队协作&#xff1a;别让沟通成本拖垮你的项目 什么是前端团队协作&#xff1f; 前端团队协作是指前端开发团队成员之间的协调与配合&#xff0c;包括代码管理、任务分配、沟通交流等方面。别以为前端开发只是写代码&#xff0c;团队协作不好&#xff0c;项目就会变成一场…...

实战分享:如何用YOLOv5+SpringBoot打造化工安全火苗检测系统(附完整代码)

工业级AI实战&#xff1a;YOLOv5与SpringBoot构建智能火情预警系统 化工行业对安全生产的严苛要求&#xff0c;使得传统人工监控方式面临巨大挑战。我们团队在多个工业场景中验证了一套基于YOLOv5与SpringBoot的智能火情检测方案&#xff0c;其核心在于将前沿目标检测技术与企业…...

当LLM成为链上节点:2026奇点大会披露的首个AI原生Layer 1主网性能基准(TPS 47,200,终局延迟<87ms)

第一章&#xff1a;2026奇点智能技术大会&#xff1a;AI原生区块链应用 2026奇点智能技术大会(https://ml-summit.org) 本届大会首次设立“AI原生区块链”主题轨道&#xff0c;聚焦模型权重链上存证、推理过程可验证、智能合约与LLM深度协同等前沿范式。区别于传统Web3应用将…...