您的位置:首页 > 运维架构 > Linux

查看 linux 命令源代码的方法

2013-07-05 14:50 267 查看
用linux一段时间了,有时候想看看ls、cat、more等命令的源代码,在下载的内核源码中用cscope没能找到,在网上搜索了一下,将方 法总结如下:查看源代码主要有两种方式:
基于debian的:
以搜索ls命令源码为例,先搜索命令所在包,命令如下:
lpj@lpj-linux:~$ which ls
/bin/ls


用命令搜索该软件所在包,代码如下:
lpj@lpj-linux:~$ dpkg -S /bin/ls
coreutils: /bin/ls


从上一步中可以知道ls命令的实现在包coreutils中,用apt安装(说安装有些歧义,主要是区分apt-get -d)该包的源代码然后解压,代码如下:
sudo apt-get source coreutils
cd /usr/src/coreutils-XXX #XXX表示版本号
sudo tar zxvf coreutils-XXX.tar.gz


或者只下载源码,然后手动打补丁再解压,代码如下:
sudo apt-get -d source coreutils
cd /usr/src
tar zxvf coreutils-XXX.tar.gz
gzip -d coreutils-XXX.diff.gz #这一步会生成coreutils-XXX.diff文件
patch -p0 < coreutils-XXX.diff
cd coreutils-XXX
tar zxvf coreutils-XXX.tar.gz


OK,这几步执行完后,就可以进入/usr/src/coreutils-XXX/coreutils-XXX/src中查看各命令对应的源代码了

基于redhat的

  下面以获取cat命令的源代码为例说明:

  rpm -qif `which cat`  将显示如下信息:

  --------------------------------------------------------------------------

  Name        : coreutils                    Relocations: (not relocatable)

  Version     : 5.2.1                             Vendor: Red Hat, Inc.

  Release     : 31.8.el4_7.1                  Build Date: 2008年10月23日 星期四 21时04分08秒

  Install Date: 2009年04月07日 星期二 10时17分33秒      Build Host: ls20-bc2-14.build.redhat.com

  Group       : 系统环境/基础                 Source RPM: coreutils-5.2.1-31.8.el4_7.1.src.rpm

  Size        : 7314345                          License: GPL

  Signature   : DSA/SHA1, 2008年10月27日 星期一 22时56分59秒, Key ID 219180cddb42a60e

  Packager    : Red Hat, Inc. <>

  URL         :

  Summary     : GNU 核心工具:一组在 shell 脚本中常用的工具。

  Description :

  这些是 GNU 的核心工具。该软件包是老的 GNUfileutils、sh-utils、

  和 textutils 软件包的组合。

  --------------------------------------------------------------------------

  通过上面的信息,我们可以知道cat命令是来源于coreutils-5.2.1-31.8.el4_7.1.src.rpm源码包,我们可以到上面信息提到的 上去tarball,也可以到rpmfind.net网站上去搜索coreutils-5.2.1-31.8.el4_7.1.src.rpm此源码包。

  若是的tar.gz包,则tar zxvf tar.gz包即可;

  若是下载的src.rpm源码包,则:

  1、rpm2cpio  coreutils-5.2.1-31.8.el4_7.1.src.rpm| cpio -idv

  2、此时会在当前目录下产生coreutils-5.2.1.tar.bz2文件

  3、bzip2 -d coreutils-5.2.1.tar.bz2 解压,会产生coreutils-5.2.1.tar 文件

  4、tar xvf coreutils-5.2.1.tar 此时在当前目录下将产生coreutils-5.2.1目录,源码便在其中。

  进入coreutils-5.2.1目录,下面的src文件夹便是存放cat命令源代码的地方,当然了除了cat,linux的很多基础的外置命令的源代码都存放其中,像cp,chown,chmod,df,ls,rm,dd等等

  对了,顺便说一下,coreutils-5.2.1目录下的configure脚本有5w多行哦,里面体现了很多shell的编程技巧,很值得喜欢shell并且想进一步深入学习shell编程的朋友去拜读一下哦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: