makefile中的export

转载 2015年07月10日 18:03:19

1)Makefile中shell版export

小标题的意思是,这里的export是shell命令。它通常包含在Makefile的规则中,成为某规则的命令行(的一部分)。例如:

init:

export DEBUG=1

……

run: init

./myapp

第一条init规则的本意是设置环境变量DEBUG=1(可能作者想让以后启动的程序myapps在Debug模式下运行)。但是上述规则没有起到作者想要的作用:对后来启动的程序apps来说,DEBUG并没有改变。原因何在?

首先,上面export行是shell命令;对每一行shell命令,make将启动一个新的进程执行这行shell命令。由于新启动的子进程的环境变量完全跟父进程不相干,因此export并不能改变父进程的环境变量,进而也不能改变父进程以后启动的子进程,或曰“弟弟进程”的环境变量。

正确的写法应该是:

run:

export DEBUG=1 && ./myapp

或者:

run:

env DEBUG=1 ./myapp

2)Makefile中make版export

同上,小标题的意思是,这里的export完全是make语法中的操作符。它通常是用来向后起的make进程(这些后起的make进程由当前的make进程启动)传送变量。例如:

recursively_build:

$(MAKE) –c arch/src/ arch=x86_64

而arch变量是文件arch/src/Makefile中的一个关键的开关变量,它将决定哪一种architecture的源文件将被编译链接。

为了将变量arch传递给将要处理arch/src/Makefile的子make进程,需要用export:

export arch

这里的export出来的变量arch将被子make进程继承。




1.在(parent,上层的)makefile中export出来变量,子makefile(sub make)中,是可以访问的。

2. 而同一级别的makefile(可通过makefile中内置变量MAKELEVEL查看得知当前makefile的levlel),是无法通过export来传递变量的,即一个makefile中export出来一个变量,同一级的另外一个makefile中,是无法访问/得到的。

3.makefile中的export是导出变量到子makfile,而目标对应执行的动作中的export,是属于shell中的export,其作用是导出变量到当前shell。此两个export的作用是不同的。


相关文章推荐

Makefile中的export

在shell中,可以使用export修改当前进程的环境变量。例如,     export PATH=.:$PATH 就可以将当前路径加入可执行文件查找路径中,这样你就不要敲“./excutable...
  • felix86
  • felix86
  • 2011年09月29日 17:36
  • 660

makefile export变量

【问题背景】 一个大的系统,通过一个总的make控制整个项目编译过程。 具体make的流程是,在/make下面直接make,会先去make uboot,再去make kerne...

有关于Makefile中的export

转自:http://www.liweifan.com/2011/10/31/linux-gcc-makefile-export/ 在shell中,可以使用export修改当前进程的环境变量。例如...
  • hedtao
  • hedtao
  • 2012年10月15日 10:05
  • 216

【已解决】一个makefile中export出来的变量在另外一个makefile中无法访问

【问题背景】 一个大的系统,通过一个总的make控制整个项目编译过程。 具体make的流程是,在/make下面直接make,会先去make uboot,再去make kernel,然后去m...
  • yuyin86
  • yuyin86
  • 2013年04月15日 18:18
  • 846

bootstrap-table-export.js和tableExport.js

  • 2017年11月02日 10:40
  • 25KB
  • 下载

sqoop export 数据覆盖更新

sqoop的导出工具是把HDFS上文件中的数据导出到mysql中 mysql中的表 现在在linux上创建一个文件,并把这个文件上传到hdfs上 cat person.t...

Sqoop的import和export工具的使用几种案例

Sqoop的import工具抽数的几种情况: 1. Hive表无分区,全量从Oracle中抽取数据到Hive的表中 sqoop import -D mapred.job.queue.nam...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:makefile中的export
举报原因:
原因补充:

(最多只允许输入30个字)