AIX6.1 下构建 GCC/G++ 编译环境

    网络上关于AIX安装gcc/g++文档很多,不过大多数都基于5.3,试图在一台AIX6.1安装,安装过程少不了插曲,记录供查阅。
1.  下载gcc/g++ for aix 6.1版本。IBM官网提供了4.2.0.3的安装,网络关于4.2安装的文章也很多,这里就不赘述,但4.2.0.3在编译某个第三方C++库时有bug(和模版有关,因为是第三方库,鉴于不修改原始代码的原则,没有手工去修改代码),只好放弃4.2版本。最终采用的是4.4.5版本,可以到gcc官方网站下载(由于版本会及时更新,该地址不一定有完全相同版本,但原理类似)。
    IBM 4.2.0.3 官方下载:  http://www-03.ibm.com/systems/power/software/aix/linux/toolbox/alpha.html
    GCC 官方下载: http://gcc.gnu.org/install/binaries.html
    aix相关的有3个地址,我使用的是
     http://www.bullfreeware.com/downloaded_50.php
    这个地址目前提供的是4.45版本,另外一个地址
     ftp://www.oss4aix.org/latest/aix61/
    有4.6的版本。

    下面几个必须:
    libgcc-4.4.5-1.aix6.1.ppc.rpm
    libstdc++-4.4.5-1.aix6.1.ppc.rpm
    libstdc++-devel-4.4.5-1.aix6.1.ppc .rpm 
    gcc-4.4.5-1.aix6.1.ppc.rpm
    gcc-c++-4.4.5-1.aix6.1.ppc.rpm

2.  通过rpm -ivh 包名的方式顺次安装上面下载的rpm包,例如
    rpm -ivh libgcc-4.4.5-1.aix6.1.ppc.rpm
    如果安装失败,一般是依赖包没有导致,根据提示信息到上面提供的网页找到对应的安装包,例如mpfr-3.0.1-1。错误提示会包含包名和版本号,一般大于等于需求版本就可以(注意:上面的服务器上mpfr-3.0.1-1发现只有for aix5.3的包,不过在 aix6.1下也能正常使用)。

3. 安装 libm,如果不安装,编译会出错(如果编译一个简单程序能过,说明机器上已经有libm,不需要在安装)。插入AIX6.1的第一张安装光盘,执行
   mount -r -v cdrfs /dev/cd0 /mnt
   installp -d/mnt bos.adt.libm
   第一句话是把光盘挂载到/mnt目录,第二句话是安装bos.adt.libm包,bos.adt.libm是包名。
   注意:网络上关于这个错误的都是基于AIX5.3的解决描述,用相关描述方式无法正常安装,通过参考IBM官方网站 http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp?topic=/com.ibm.aix.doc/doc/base/aixinformation.htm得到具体办法。

4. 至此,gcc/g++安装完毕,通过 gcc -v 或者 g++ -v 查看是否正常。试图安装多版本进行切换,但发现版本冲突,所以把老版本(4.2.0.3,先安装的这个)卸载了在安装,原则上应该可以多版本切换,不过没深入去看了。

5. 其它有用信息:
   gcc/g++ 命令行参数: http://gcc.gnu.org/onlinedocs/gcc-4.4.7/gcc/
   最主要的是 -maix64 或者 -maix32指定编译位数,默认是32位
   ld 参数: http://www.fzs8.net/linux/2007-08-12/8434.html
   ld 参数可以通过gcc/g++直接传递,例如 -s参数,可以这样:
   gcc -Wl,-s my.cpp
   -Wl加一个逗号,后面就是ld参数,多个参数之间用逗号隔开

你可能感兴趣的:(AIX6.1 下构建 GCC/G++ 编译环境)