深入剖析C#继承机制6
来源:互联网 发布:淘宝交易有没有风险 编辑:程序博客网 时间:2024/06/10 02:09
分析并解读Makefile:
---> soho
第一句不知道什么意思:
CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; /
else if [ -x /bin/bash ]; then echo /bin/bash; /
else if [ -x /usr/bin/bash ]; then echo /usr/bin/bash; /
else if [ -x /usr/local/bin/bash ]; then echo /usr/local/bin/bash; /
else echo sh; fi ; fi ; fi ; fi)
尝试的结果如下:
[chyy@localhost:~/soho2.8.1/uClinux/uC-src]# echo $BASH
/bin/bash
[chyy@localhost:~/soho2.8.1/uClinux/uC-src]# echo $$BASH
3785BASH
[chyy@localhost:~/soho2.8.1/uClinux/uC-src]# $($$BASH)
-bash: 3785BASH: command not found
如果直接执行:
[chyy@localhost:~/soho2.8.1/uClinux/uC-src]# $(3785BASH)
-bash: 3785BASH: command not found
[chyy@localhost:~/soho2.8.1/uClinux/uC-src]# $(/bin/bash)
[chyy@localhost:~/soho2.8.1/uClinux/uC-src]# ps
[chyy@localhost:~/soho2.8.1/uClinux/uC-src]# id
蓝色一句执行成功,执行了该句以后,用ps检查发现,Bash被执行了两遍,而且无论执行什么命令,都不会显示出结果。(待跟踪:执行了bash以后,为什么不会打印出命令结果)
注意:makefile文件中的$符号,其意义是执行括号中的函数。而执行的shell中的“if -x”的意思是查看某个文件是否存在。
---> http://www.douzhe.com/docs/bbsjh/12/1039.html
2.6 函数 (Functions)
makefile 里的函数跟它的变量很相似——使用的时候,你用一个 $ 符号跟开括号,函 数名,空格后跟一列由逗号分隔的参数,最后 用关括号结束。例如,在 GNU Make 里 有一个叫 'wildcard' 的函 数,它有一个参数,功能是展开成一列所有符合由其参数 描述的文 件名,文件间以空格间隔。你可以像下面所示使用这个命令:
SOURCES = $(wildcard *.c)
这行会产生一个所有以 '.c' 结尾的文件的列表,然后存入变量 SOURCES 里。
makefile文件示例:soho2.8.1/src/router/Makefile
ifneq ($(wildcard ../cy_conf.mak),)
include ../cy_conf.mak
endif
---> soho2.8.1/src/router/Makefile
该文件中有下面两句
include .config
ifneq ($(wildcard ../cy_conf.mak),)
include ../cy_conf.mak
endif
其中cy_conf.mak可以控制哪个模块是否编译,但是.config文件似乎也有控制模块是否编译的语句,比如PPP模块,在两个文件中都出现了,cy_conf.mak中是:
PPPD_SUPPORT=1
CONFIG_PPPD=y
.config中是:
CONFIG_PPP=y
待跟踪:这两个配置文件的作用到底是什么,有什么区别?
从后面的一些语句来看,这两个配置都可以指导模块编译,如:
# uClibc wrapper
ifeq ($(CONFIG_UCLIBC),y)
export PLATFORM := $(PLATFORM)-uclibc
endif
ifeq ($(IGMP_PROXY_SUPPORT),1)
CONFIG_IGMPPROXY=y
endif
以CONFIG_XXX形式出现的变量都在.config中定义,以XXX_SUPPORT形式出现的变量都在cy_conf.mak中出现,似乎.config文件是基本的配置文件,因为Makefile文件中有如下语句:
CONFIG_IPTABLES=y
obj-y += led
obj-y += nvram
obj-$(CONFIG_HTTPD) += httpd
obj-$(CONFIG_RC) += rc
......
obj-$(CONFIG_UPGRADEFIRMWARE) += upgrade_firmware
为了验证,将.config中属于“Options”那一部分的模块全部屏蔽,并重新编译:
#CONFIG_VENDOR=broadcom
#CONFIG_UDHCPD=y
#CONFIG_DHCPRELAY=y
#CONFIG_PPP=y
#CONFIG_UPNP=y
......
#CONFIG_NTP=y
#CONFIG_DNSMASQ=y
......
#CONFIG_SNMPD=y
#CONFIG_ZEBRA=y
#CONFIG_FREESWAN=y
#CONFIG_TC=y
#CONFIG_PING=y
#CONFIG_EMAILALERT=y
#CONFIG_UPGRADEFIRMWARE=y
编译以前的image大小是:
[chyy@localhost:~]# ll /tftpboot/chyy/
total 12620
-rw-r--r-- 1 chyy sslvpn 594 May 9 00:06 default.scriptinfo.txt
lrwxrwxrwx 1 chyy sslvpn 32 May 9 00:06 image.bin -> /tftpboot/chyy/image.bin.default
-rwxr-xr-x 1 chyy sslvpn 4931680 May 9 00:06 image.bin.default
lrwxrwxrwx 1 chyy sslvpn 34 May 9 00:06 image.flash -> /tftpboot/chyy/image.flash.default
-rw-r--r-- 1 chyy sslvpn 3966671 May 9 00:06 image.flash.default
-rw-r--r-- 1 chyy sslvpn 3966671 May 9 00:06 image.flash.default.part1
观察重新编译后生成的image文件大小:
[chyy@localhost:~/soho
total 12620
-rw-r--r-- 1 chyy sslvpn 594 May 9 00:36 default.scriptinfo.txt
lrwxrwxrwx 1 chyy sslvpn 32 May 9 00:36 image.bin -> /tftpboot/chyy/image.bin.default
-rwxr-xr-x 1 chyy sslvpn 4931680 May 9 00:36 image.bin.default
lrwxrwxrwx 1 chyy sslvpn 34 May 9 00:36 image.flash -> /tftpboot/chyy/image.flash.default
-rw-r--r-- 1 chyy sslvpn 3966639 May 9 00:36 image.flash.default
-rw-r--r-- 1 chyy sslvpn 3966639 May 9 00:36 image.flash.default.part1
可以认为没有什么效果。
Ctrl-C
一个GNU make高手的个人网页:
---> http://xhbdahai.cublog.cn/
下载了翻译后的《GNU Make中文手册》,包括HTML版本和PDF版本
学习了“$(MAKE) -C”和“伪目标”的用法!(很有收获,推荐)
Ctrl-C
END
- 深入剖析C#继承机制6
- 深入剖析C#继承机制6
- 深入剖析C#继承机制(6)
- 深入剖析C#继承机制
- 深入剖析C#继承机制
- 深入剖析C#继承机制
- 深入剖析C#继承机制
- 深入剖析C#继承机制1
- 深入剖析C#继承机制2
- 深入剖析C#继承机制3
- 深入剖析C#继承机制4
- 深入剖析C#继承机制5
- 深入剖析C#继承机制7
- 深入剖析C#继承机制1
- 深入剖析C#继承机制2
- 深入剖析C#继承机制3
- 深入剖析C#继承机制4
- 深入剖析C#继承机制5
- MSDN Help
- 查看SQLServer数据表的详细信息
- 深入剖析C#继承机制5
- 大话忽悠
- 常用js正则表达式摘要[更新]
- 深入剖析C#继承机制6
- 初次来到这里!忘大家多多关照
- 深入剖析C#继承机制7
- 使用C#和Excel进行报表开发-设置单元格的显示格式
- 五一的收获
- 关于web.xml配置的详细说明
- MyEclipse+struts+Hibernate配置开发
- ASP.NET 2.0 发邮件
- asp.net笔试题收藏2