当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: Makefile 初探Makefile 初探
 

 

 ·安装imap服务器    »显示摘要«
    摘要:安装imap服务器   几乎所有的发行包都带有imap服务器软件(一般是华盛顿大学版本),最好的办法是用你的发行包安装imap服务器。事实上,我个人觉得imap服务 器很少被使用。下载最常规的imap服务器源码地址是:ftp://ftp.cac.washington.edu/imap/imap.tar.z   tar zxvf imap.tar.z   cd ima......
 ·内核升级    »显示摘要«
    摘要:内核升级如果你不愿意冒险,可以跳过这个部分。不过根据我实际使用的经验,2.4.x版本的内核性能比2.2.x 的性能至少提高40%,还是很值得一试的。现在最新的发行包几乎都带有新的2.4内核,但是版本号想对保守。这里,我的建议是在决定升级任何部分的时候, 一定要首先看一下所谓的“currect version release note”信息,里面告诉你本次版本升级都有些什么改动。如果改动的内容......


Makefile 初探
上一页   ...makefiles是make自已识别的一个变量,在执行新的makefile之前,make会首先加载 makefiles所指的文件.在主makefile中它即指向.config.

【程序编程相关:Unix操作系统的发展及时间表

【推荐阅读:关于Neighbour table ov

【扩展信息:关于linux图形界面的基本知识[转]

==========================================

makefile解读之三: 模块的版本化处理

==========================================

模块的版本化是内核与模块接口之间进行严格类型匹配的一种方法.当内核配置了config_modversions之后,make dep操作会在include/linux/modules/目录下为各级makefile中export-objs变量所对应的源文件生成扩展名为. ver的文件.

例如对于kernel/ksyms.c,make用以下命令生成对应的ksyms.ver:

gcc -e -d__kernel__ -d__genksyms__ ksyms.c | /sbin/genksyms -k 2.4.1 > ksyms.ver

-d__genksyms__的作用是使ksyms.c中的export_symbol宏不进行扩展.genksyms命令识别export_symbol()中的函数名与对应的原型,再根据其原型计算出该函数的版本号.

例如ksyms.c中有一行:

export_symbol(kmalloc);

kmalloc原型是:

void *kmalloc(size_t, int);

genksyms程序对应的输出为:

#define __ver_kmalloc 93d4cfe6

#define kmalloc _set_ver(kmalloc)

在内核符号表与模块中,kmalloc将变成kmalloc_r93d4cfe6.

在生成完所有的.ver文件后,make将重建include/linux/modversions.h文件,它包含一系列#include指令 行嵌入各个.ver文件.在编绎内核本身export-objs中的文件时,make会增加一个"-dexport_symtab"编绎标志,它使源文件 嵌入modversions.h文件,将export_symbol宏展开中的函数名字符串进行版本名扩展;同时,它也定义_set_ver()宏为一空 操作,使代码中的函数名不受其影响.

在编绎模块时,make会增加"-include=linux/modversion.h -dmodversions"编绎标志,使模块中代码的函数名得到相应版本扩展.

由于生成.ver文件比较费时,make还为每个.ver创建了一个后缀为.stamp时戳文件.在make dep时,如果其.stamp文件比源文件旧才重新生成.ver文件,否则只是更新.stamp文件时戳.另外,在生成.ver与 modversions.h文件时,make都会比较新文件与旧文件的内容,保持它们修改时间为最旧.

==========================================

makefile解读之四: rules.make的注释

==========================================

代码:

#

# this file contains rules which are shared between multiple makefiles.

#

#

# false targets.

#

#

.phony: dummy

#

# special variables which should not be exported

#

# 取消这些变量通过环境向make子进程传递.

unexport extra_aflags   # as 的开关

unexport extra_cflags   # cc 的开关

unexport extra_ldflags    # ld 的开关

unexport extra_arflags   # ar 的开关

unexport subdirs   #

unexport sub_dirs   # 编绎内核需进入的子目录,等于subdir-y

unexport all_sub_dirs   # 所有的子目录

unexport mod_sub_dirs   # 编绎模块需进入的子目录


...   下一页
 ·使用xmanager访问linux图形界面    »显示摘要«
    摘要:使用xmanager访问linux图形界面1. 修改/etc/inittab,改变runlevel为5,例如 [root@qredhat etc]# cat /etc/inittab ...... id:5:initdefault: ...... 改为5级别方式运行linux2. 修改gdm的配置文件,/etc/x11/gdm/gdm.conf,将[xdmcp]中的enable选项设置为1,例如 ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE