获取GCC源代码
阅读源代码的第一步是获取源代码,巧妇难为无米之炊嘛!
使用以下任意方法均可获得gcc源代码:
-
svn checkout svn://gcc.gnu.org/svn/gcc/trunk SomeLocalDir
(摘自http://gcc.gnu.org/svn.html) -
git clone git://gcc.gnu.org/git/gcc.git
(摘自http://gcc.gnu.org/git/?p=gcc.git;a=summary)
需要注意的是,第二种方法得到的代码并非是svn的所有历史镜像。因为gcc的svn分支不是全部位于svn://gcc.gnu.org/svn/gcc/branches/这一层,其中如redhat或者google等实际起到名字空间的作用,再下一层才是真正的分支内容,然而svn到git转换的脚本不能识别这种情况,因此所有这类位于第二层的分支都不存在于git镜像中。
当然对于初学者来说并不重要,我们只要盯住一个版本看就好了,比如4.5.2或者4.4.5(原本想等4.6发布之后再开始这个学习系列,目前看来一半时是等不到了)。由于我之前在4.4.5上有一点积累,因此如没有特别说明,这一系列的心得都是通过阅读4.4.5的代码而来。
使用源代码交叉索引工具
拿到源代码之后,建议使用代码交叉索引工具生成索引,方便阅读。常用的有etags(或者ctags)和cscope。
etags
gcc的Makefile
里有生成TAGS
文件的target,可以直接在编译目录下生成,如
$ mkdir build $ cd build $ ../gcc/configure --enable-languages=c,c++,lto $ make $ make -k etags # OR `make -k tags'
在Emacs里加载TAGS
文件的方法是:M-x visit-tags-table
。
cscope
cscope的配置也不复杂,以下是在Ubuntu 10.10下安装配置步骤
$ sudo apt-get install cscope cscope-el $ cd gcc $ gcc-cscope.sh
gcc-cscope.sh
脚本内容如下
#!/bin/bash BUILD_DIR=${1:-../build/gcc} cscope-files.sh libiberty gcc include gcc/config/arm $BUILD_DIR >cscope.files if [ -f cscope.files ] then cscope -b -q -k else echo "cscope.files not found at $PWD." exit 1 fi
由于gcc的部分代码是在编译期生成的,所以除了索引源代码目录下的文件,还要索引编译目录下的文件(对应于BUILD_DIR这个变量所制订的目录,缺省为build/gcc
,也可以通过参数使用其它目录)。
由于gcc支持多种硬件平台,为避免混淆,我只选择了自己关心的ARM部分代码,其它后端代码忽略。
cscope-files.sh
脚本内容如下:
#!/bin/bash for dir in "$@" do find "$dir" -maxdepth 1 -iname "*.[hc]" -type f done
要想在Emacs里面使用cscope索引结果,需要安装cscope-el
软件包,并把下面一行代码加入Emacs配置文件
(require 'xcscope)
具体使用方法可以参见/usr/share/emacs/site-lisp/xcscope.el
文件内的注释。
相关推荐
GCC编译器的源代码GCC编译器的源代码GCC编译器的源代码GCC编译器的源代码GCC编译器的源代码GCC编译器的源代码GCC编译器的源代码
gcc 10.1.0源代码,需要配置,可网上搜索配置方法 GUN编译器,用于基于Linux的系统编译C/C++程序
GCC源代码,学C++对编译器做的工作很模糊,大概看看吧
gcc编译器源代码,对学习编译器很有帮助
Gcc核心源代码 gcc 源代码分析 结构分析
全部源代码,解压300M+,方便大家学习编译器的原理。
svn://gcc.gnu.org/svn/gcc/trunk这个是GCC源代码的地下SVN的。 1.The C++ Programming Language Special 3rd Edition.pdf 2.Addison.Wesley.Effective.C.Plus.Plus.55.Specific.Ways.to.Improve.Your.Programs.and....
这个包包含了所有avr-gcc的工具的源代码,可以分别进行编译的。
gcc 7.2.0 源代码 自己备用
Gcc核心源代码分析
linux webserver(GCC 源代码)
早期GCC源代码,使用比较广泛的一个版本,来源于GCC官方ftp://gcc.gnu.org。
GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。
gcc编译器的源代码,下来学习不错。。。。。。。。。。。。。。。。。。。。。。。
这是快速傅立叶变换的gcc格式的源代码,包括变换和反变换,非常适合于linux用户的使用
本书介绍了GCC编译器的内核结构,以及GCC编译器涉及到的关键技术。
GCC 源代码编译安装文档, 怎么用源代码安装GCC