小技巧:追溯历史开发信息

在gcc中,如果想查看以往的代码变动信息,可以查看相应源码目录下的ChangeLog文件。ChangeLog有很好的格式要求和内容规范,并且也要经过review。这虽然对于Patch提交者来来说显得有些繁琐,但当你需要查看历史开发信息的时候,就充分感受到了它的重要性了。

在LLVM中,没有ChangeLog文件,LLVM的开发者认为查看svn log就足够了。但是,日志信息的格式和内容比较随意,而且,一般还需要手动导出到文件中进行查看。使用svn命令时,建议使用svn log -v命令,这个-v选项,可以打印出相关的文件变动信息,可以帮助你更好的追溯代码变动情况。

一键编译安装gcc

今天看到一篇文章,作者通过一个shell脚本和一个Makefile,可以自动下载需要的所有安装包并且编译gcc

$ # Download the scripts using wget.
$ mkdir /opt/gcc-4.9.2
$ cd /opt/gcc-4.9.2
$ wget http://projects.joelinoff.com/gcc-4.9.2/bld.sh
$ wget http://projects.joelinoff.com/gcc-4.9.2/Makefile
$ chmod a+x bld.sh
$ make
[output snipped]
$ # The compiler is installed in /opt/gcc-4.9.2/rtf/bin

我试了一下,果然很方便。只要有一台可以联网的机器就可以了。感兴趣的朋友可以试一试。

P.S.:
(1)编译libiconv时可能会有“'gets' undeclared here“错误,请参考这篇文章
(2)如果机器是64位的,但是缺少32位的库文件。这样在编译gcc时会出现错误:“configure: error: I suspect your system does not have 32-bit developement libraries (libc and headers). If you have them, rerun configure with –enable-multilib. If you do not have them, and want to build a 64-bit-only compiler, rerun configure with –disable-multilib.”。提示需要配置“--disable-multilib”。

如何卸载gdb?

前几天安装最新的gdb过程中出了点问题,想卸载一下。结果执行“make uninstall”命令后,出现下面的结果:

bash-3.2# make uninstall
the uninstall target is not supported in this tree

看起来,gdb不支持直接用“make uninstall”命令卸载,那么如何卸载它呢?我在gdb mailing list里问了一下,收到了Doug Evans回信

Yikes.

A clumsy workaround is to cd into each subdir in the build tree and do
make uninstall there.

只能是进入每个子目录,分别执行“make uninstall”命令了。

后来,他又在一封单独的信中提到,他已经提交了bug,看看会不会有人做一下改进了。

在Solaris上使用LD_OPTIONS环境变量诊断编译链接问题

最近在Solaris上编译一款开源软件,在最后链接阶段出了问题,导致ld程序core dump。由于没有ld程序源代码,导致完全没思路,没办法,只好在stackoverflow上求教:http://stackoverflow.com/questions/26009192/why-the-ld-crash-in-building-libgd。从回复中我才知道可以通过设置LD_OPTIONS环境变量,来了解整个链接过程。举个例子:

LD_OPTIONS=-Dfiles,detail

指定files会输出ld当前处理的文件,detail会提供更多的信息。

可以用“ld -Dhelp”命令打印每个选项的详细帮助信息。

如果想详细了解Solaris下程序的链接过程,可以参考这篇文档:Linker and Libraries Guide

祝贺齐尧成为国内首个gdb global maintainer

原文:https://sourceware.org/ml/gdb-patches/2014-10/msg00165.html

New global maintainer – Yao Qi

I’m pleased to announce that Yao Qi has accepted an invitation to become
a global maintainer of GDB. He has made quite a few contributions over
the past four years, and is notable for his unfailing good humor despite
digging into ugly parts of the code.
Join us in welcoming him to his augmented responsibility, and feel
free to send him all your patches. :-)

Stan
stan@codesourcery.com

2014-10-08 Stan Shebs

* MAINTAINERS (GLOBAL MAINTAINERS): Add Yao Qi.