后缀linux中环境变量的设置和makefile文件的编辑

linux设置环境变量  时间:2021-01-27  阅读:()

环境变量

8.1查看环境变量

显示所有的环境变量设置$env

$echo$ENV_VARIABLE 显示指定环境变量的设置

例

$echo$PATH

/bi n:/etc:/usr/bi n:/tcb/bi n

8.2设定环境变量

$ENV_VARIABLE=XXX;export ENV_VARIABLE

例

$ 将 环 境 变 量 PATH 设 定 为原 PATH值+$INFORM IXDIR/binPATH=$PATH:$INFORM IXDIR/bin;export PATH

8.3取消环境变量设置

$unset$ENV_VARIABLE

例

$set GZJ=gzj ;export 设置环境变量GZJGZJ

$echo$G ZJ

显示环境变量值gzj

$u nset$G ZJ 取消环境变量GZJ的设置

$echo$G ZJ

已取消

一makefi le规则makefi le是一个make的规则描述脚本文件包括四种类型行 目标行、命令行、宏定义行和make伪指令行如“includ e”。 makefi le文件中注释以“#”开头。当一行写不下时可以用续行符“\”转入下一行。

1 .1 目标行

目标行告诉make建立什么。它由一个目标名表后面跟冒号“:”再跟一个依赖性表组成。

例example:depfi le deptarget

该目标行指出目标exam ple与depfi le和deptarget有依赖关系如果depfi le或deptarget有修改则重新生成目标。example1 example2 example3:deptarget1 deptarget2 depfi le

该目标行指出目标名表中的example1 、 example2、 example3这三个各自独立的目标是用相同的依赖列表和规则生成的。clean:

空的依赖列表说明目标clean没有其他依赖关系。

目标行后续的以Tab开始的行是指出目标的生成规则该Tab字符不能以空格代替。例如example.o:example.cexample.hcc–cexample.c

该例子指出目标example.o依赖于example.c和example.h。如果example.c或example.h其中之一改变了就需要执行命令cc–cexample.c重新生成目标example.o。

可以用文件名模式匹配来自动为目标生成依赖表如prog: *.c

以下是一个简单的makefi le的例子

图1最简单的makefi le例make使用makefi le文件时从第一个目标开始扫描。上例中的第一个目标为al l 所以目标clean不会自动被执行可以通过命令make clean来生成目标。

1 .2命令行

命令行用来定义生成目标的动作。

在目标行中分号“;”后面的文件都认为是一个命令或者一行以Tab制表符开始的也是命令。

如在上面的ma kefi l e例中第三行以Ta b字符开始的cc命令即是一个命令行说明要生成hel lo应执行的命令。也可以写成 hel lo:hel lo.o;cc–c hel lo–L…一般情况下命令行的命令会在标准输出中回显出来如对上面的makefi l e执行make时标准输出如下cc-c hel lo.ccc-o hel lo-L/usr/X11 R6/l ib-L/usr/l ib-lXm-lXt-lX11 hel lo.occ-c hel lo1 .ccc-o hel lo1 -L/usr/X1 1 R6/l ib-L/usr/l ib-lXm-lXt -lX1 1 hel lo1 .o

如果不希望命令本身回显可在命令前加@字符如在上例中不希望回显cc–chel lo.c和cc–c hel lo 1 .c可修改makefi le文件如下

图2抑制回显的makefi l e例

对该makefi le文件执行make时标准输出如下cc-o hel lo-L/usr/X11 R6/l ib-L/usr/l ib-lXm-lXt-lX11 hel lo.occ-o hel lo1 -L/usr/X1 1 R6/l ib-L/usr/l ib-lXm-lXt -lX1 1 hel lo1 .o

可以看出命令行前有@字符的不回显。

1 .3宏定义行

在makefi le中可以使用宏定义减少用户的输入例如上例中对hel lo和hel lo1的编译选项均为“-L/usr/X11 R6/l i b-L/usr/l ib-lXm-lXt -lX11”此时可以用宏来代替如

图3使用宏定义的makefi le例

宏定义的基本语法是name=value

在定义宏时次序不重要。宏不需要在使用前定义。如果一个宏定义多次则使用最后一次的定义值。

可以使用“$”字符和“()”或“{}”来引用宏例如cc–o hel lo.o$(CCFLAGS)hel lo.o

也可以将一个宏赋值给另一个宏但这样的定义不能循环嵌套如

A=value1

B=value2

C=$(A)$(B)等价于C=value1 value2

1 .4伪指令makefi le大部分由宏定义行、命令行和目标行组成。第四种类型是make伪指令行。 make伪指令没有标准化不同的make可能支持不同的伪指令集使得makefi le有一定的不兼容性。如果要考虑移植性问题则要避免使用make伪指令。但有一些伪指令如include由于使用比较多很多不同make都提供该伪指令。

1 .4.1伪指令include

该伪指令类似C语言中的#includ e 它允许一次编写常用的定义并包括它。includ e伪指令必须在一行中第一个元素必须是include并且跟一个要包含的文件名如include default.mk

1 .4.2伪指令“#”

“#”字符也是make的伪指令它指出“#”后面的文件是注释如

PROGNAME=test#define macro

#don'tmodify this

二后缀规则

2.1双后缀规则

在前面的makefi le例中有许多重复内容例如生成hel l o和hel l o1的命令类似生成hel lo.o和hel lo1 .o的命令也类似除了编译或链接的文件不一样外其它均相同这时我们就可以使用后缀规则。首先看一个双后缀的例子

图4使用双后缀规则的makefi le例

后缀规则使用特殊的目标名“.SUFFIXES”。

第一行中.SUFFIXES的依赖表为空用来清除原有的后缀规则因为.SUFFIX ES可以在makefi le中多次使用每一次都将新的后缀规则加入以前的后缀规则中。第二行中指定后缀规则为“.c.o” 即表示将所有的.c文件转换为.o文件。第三行指定将.c文件转换成.o文件的方法。 $(CC)为make的预定义宏其默认值为cc $<为特殊的宏代替当前的源文件 即所有要编译的.c文件。第六行指定目标hel lo和hel lo 1的生成方法。$@为特殊的宏代替当前的目标名即hel lo和hel lo 1  $@.o即为hel lo.o和hel lo1 .o。

上例介绍的是双后缀规则 即它包含两个后缀如.c.o用来把一个C源文件编

译为目标文件。双后缀规则描述如何由第一个后缀类型的文件生成第二个后缀类型的文件例如 .c.o规则描述如何由.c文件生成.o文件。

2.2单后缀规则

单后缀规则描述了怎样由指定后缀的文件生成由它基名为名字的文件。例如使用单后缀规则.c可以由hel lo.c和hel lo1 .c生成hel lo和hel lo1文件。例如将前面的makefi le改为

图5使用单后缀规则的makefi le例

由于.c后缀规则为make标准后缀规则 make为其指定了相应的命令行所以在makefi le中可以不用再指定其目标生成的具体命令行。

下表是make提供的标准后缀规则。

表1 make标准后缀规则

后缀规则命令行

.c$(LINK.c)–o$@$<$(LDLIBS)

.c. ln$(LINK.c)$(POUTPUTOPTPUT OPTION)–i$<

.c.o$(COMPILE.c)$(OUTPUT OPTION)$<

.c.a$(COMPILE.c)–o$%$<

$(AR)$(ARFLAGS)$@$%

$(RM)$%

三特殊目标

在后缀规则中使用了特殊目标.SUFFIX ES用来指定新增的后缀规则。make还提供了几个特殊目标来设置make的行为下面为一些特殊的目标

. IGNOREmake在执行命令行时如果返回的是错误码make的缺省动作是停止并退出。增加该目标后 make将忽略命令行返回的错误码并继续执行后续的操作。.SILENT

前面已经介绍过make在执行命令行时会回显命令行内容在命令行前增加“@”字符将抑制该命令行的回显。

如果增加该目标所有的命令行不再回显相当于在每个命令行前均增加了“@”字符。

.PRECIOUS

当收到一个信号或从shel l命令返回非零的错误码时make删除它所有已建立的文件。但有些文件即使出了错误用户也不想让make删除这些文件可以作为.PRECIO US目标的参数。它可以在一个makefi le中出现多次每一次都累积文件列表。

.SUFFIXES

它为makefi le指定新的后缀规则新的后缀规则作为.S UFFIX ES的依赖表给出。 .SUFFIX ES可以在一个makefi le中多次使用每一次都将新的后缀规则加入以前的后缀规则中如果.SUFFIXES的依赖表为空则设置后缀规则表为空。

四特殊的宏

为简单使用规则 make提供了几个特殊的宏

$@

整个当前目标名的值可以由宏“$@”来代替。

$<

当前的源文件由“$<”来代替。例如在前面的例子中用到了$(CC)–c $<其中的“$<”是所有要编译的.c文件。宏“$<”仅在后缀规则或.DEFAULT中有效。

$*

当前目标的基名由宏“$*”来代替。例如目标的名字是hel lo.o则基名就是除去了后缀.o的hel lo。

以上介绍的特殊宏使用了make自身的规则用户不可以改变。下表介绍了C中预定义的宏。

用途宏默认值

库文档汇编命令ARar

ARFLAGS rv

AS as

ASFLAGS

COMPILE.s$(AS)$(ASFLAGS)$(TARGET ARCH)

C编译器命令CC cc

CFLAGS

CPPFLAGS

COMPILE.c$(CC)$(CFLAGS)$(CPPFLAGS)$(TARGET ARCH)–cLINK.c$(CC)$(CFLAGS)$(CPPFLAGS)$(LDFLAGS)$(TARGET ARCH)链接编辑器命令LD ld

LDFLAGSrm命令RM rm

后缀列表SUFFIXES.o.c.c~.s.s~.S.S~. ln.f .f~.F.F~. l .mod .mod~.sym.def .def~.p.p~.r .r~.y.y~.h.h~.sh.sh~.cps.cps~

五makefi le的应用

当调用make时它在当前目录下搜索文件名是“makefi le”或“Makefi le”的文件并执行。

如果不想使用上述缺省文件可以使用命令行中的“-f”来指定文件如将编写的makefi le命名为mkl ib则指定为“make–f mkl ib”。

ShockHosting($4.99/月),东京机房 可享受五折优惠,下单赠送10美金

ShockHosting商家在前面文章中有介绍过几次。ShockHosting商家成立于2013年的美国主机商,目前主要提供虚拟主机、VPS主机、独立服务器和域名注册等综合IDC业务,现有美国洛杉矶、新泽西、芝加哥、达拉斯、荷兰阿姆斯特丹、英国和澳大利亚悉尼七大数据中心。这次有新增日本东京机房。而且同时有推出5折优惠促销,而且即刻使用支付宝下单的话还可获赠10美金的账户信用额度,折扣相比之前的常规...

CloudCone(20美元/年)大硬盘VPS云服务器,KVM虚拟架构,1核心1G内存1Gbps带宽

近日CloudCone商家对旗下的大硬盘VPS云服务器进行了少量库存补货,也是悄悄推送了一批便宜VPS云服务器产品,此前较受欢迎的特价20美元/年、1核心1G内存1Gbps带宽的VPS云服务器也有少量库存,有需要美国便宜大硬盘VPS云服务器的朋友可以关注一下。CloudCone怎么样?CloudCone服务器好不好?CloudCone值不值得购买?CloudCone是一家成立于2017年的美国服务...

昔日数据月付12元起,湖北十堰机房10M带宽月付19元起

昔日数据怎么样?昔日数据是一个来自国内服务器销售商,成立于2020年底,主要销售国内海外云服务器,目前有国内湖北十堰云服务器和香港hkbn云服务器 采用KVM虚拟化技术构架,湖北十堰机房10M带宽月付19元起;香港HKBN,月付12元起; 此次夏日活动全部首月5折促销,有需要的可以关注一下。点击进入:昔日数据官方网站地址昔日数据优惠码:优惠码: XR2021 全场通用(活动持续半个月 2021/7...

linux设置环境变量为你推荐
天气预报哪个好用哪个最准确一般查看天气预报哪个软件好用?燃气热水器和电热水器哪个好电热水器和燃气热水器哪一个更安全,且更节省能源?电视直播软件哪个好电视直播软件安卓tv版哪个好用尼康和佳能单反哪个好尼康和佳能哪个好手机炒股软件哪个好手机炒股软件哪个好啊?dnf魔枪士转职哪个好dnf平民魔枪士转什么好行车记录仪哪个好行车记录仪哪个好百度空间登录怎么登录百度空间网页qq空间登录为什么我用网页登录QQ空间时,没有登录界面,直接进去一个QQ空间,请问是怎么回事?dns服务器设置DNS服务器建立的详细步骤?
php虚拟主机 域名系统 fdcservers 2014年感恩节 网通ip 京东商城双十一活动 bgp双线 怎样建立邮箱 鲁诺 web服务器安全 申请网页 新世界服务器 免费mysql数据库 双12 百度云加速 浙江服务器 电信宽带测速软件 小夜博客 asp简介 ddos攻击软件 更多