在AIX 5L上尴尬的GCC

在AIX5L系统上使用GCC编译器遇到了一系列挑战,包括编译错误、资源限制及兼容性问题。文章详细记录了安装过程中的各种错误及解决方法,并探讨了GCC与AIX自带编译器xlC之间的差异。

AIX 5L上尴尬的GCC

何谓尴尬呢?AIX 5L上本身有编译器-Visual Age C/C++,但是不知怎么的,老连装上的Visual Age有问题,什么问题呢?就是不能编译程序,老是提示你编译错误。

为此我跟严明作了一个试验,编译一段代码,用普通用户Oracle不能编译过去,但是用Oracle切换成Root用户就能编译过去,而且必须是切换成的Root,不能是直接登录的Root,我猜想可能是环境变量设置问题,严明说时源文件的问题,他说按照ANSI标准,源文件的函数中必须把变量声明放在最前面,他改了程序,果然能编译,不过也必须要在Root下编译。最要命的事,xlC只能编译C程序,不能编译C++,它说什么证书之类的东西没有被安装。不管怎么样,xlC是一个收费软件,我连想重新编译一下都不成,而且这些东西必须要IBM的相关证书才成,只有IBM才知道这是为什么吧。

还有另外一方面,据网上传说,xlC并没有完全遵从ANSI C++规范,它的STD C++类库与ANSI 规定的STD C++类库也不一样,这意味着我们用STL库写的程序可能面临很大的改动,由于我们写的程序调用的都是标准的STL库。

 

因此,我还是投入了GNUGCC/G++怀抱,我从网上downGCC 3.4.4source文件,打算在AIX 5.3系统上编译安装。谁知道错误百出,才知道AIX系统支持开源代码不是特别的好。

第一个错误,AIX上的make程序不同于GNUmake程序,GCCmakefile是用GNUmake程序来执行的,所以我先装了一个GNUmake程序。

第二次错误是因为找不到xlC编译器或者它没有正常运行,解决办法是老办法——Oracle用户登录进去切成Root,再开始安装,OK

第三次错误是资源超出限制,这里要说一下,AIX对全部用户使用系统资源是有限制的,就算你是万能的Root也是一样,因此我更该了一些资源限额,重新引导了一下系统,也搞定了这个错误。

第四个错误就更奇怪了,是在stage 3的时候出的,说文件比较,两个阶段产生的文件不一样,结果就放弃了。我在网上查找这个错误的解决方案,杳无音信。最后,见到一根救命稻草,它说,别管这个错误,gcc其实已经编译完成了……

看一下gcc –v,果然可以用了。但是,但是……居然还要我安装libstdc++之类的库,而这些库的安装又很耗时间,都不是能一次安装上的。

 

看来只有选择IBM提供的Took Kit里面的gcc rpm安装包了,由于是为AIX 5.3所定制的,所以安装没有问题,安装通过,现在GCC/G++都能正常使用了。

GNU软件给我提供的一个很好的思路就是,它的安装方式,一般GNU源代码包都要在源代码目录建一个目标目录,在目标目录下面执行源代码目录下面的configure脚本,执行这个脚本会在当前的目标目录下生成一个makefile文件,执行make bootstrapmake install就能将源代码编译成可执行程序并且安装到系统中去。

为此我编了一个脚本,名字叫configure,放在我编写的程序源文件目录下,在源文件目录下建立一个out目录,进入out目录,执行../configure,自动在当前目录下生成makefile文件,生成的再执行make就可以进行编译程序了。

 

话说回来,为什么叫尴尬的GCC,因为gcc装上之后,能编译C/C++源程序,可就是编译不了AIX下的OCCI,提示内容先是找不到-lirc;我将这个选项去除了再编,提示crt64位库不能用;删了再编,提示无法找到libocci.a静态连接库或者它不适一个合法的COFF文件;我把它删了,提示occi.h的头文件语法错误,这下实在无可奈何了,因为那个静态连接库libocci.a是必须的。

我遇到的麻烦是Oracle 10g for AIX装在AIX5L系统上,装出来的libocci.a大小为0,就是说libocci.a不能正常链接。察看Oracle的安装日志,我算服了Oracle了,它居然用xlC来连接libocci.a,而前面已经说过,xlC不能编译C++程序。

因此问题又回到了xlC上来了,由于它不能编译C++程序,致使Oracle在安装的时候不能正常地连接libocci.a,所以使用OCCI的程序在调用这个静态连接库的时候,显示文件大小为0……呜乎哉,难道Oracle安装的时候不会根据系统环境自行选定gcc编译器么?还是这个版本的Oracle只能用xlC链接?这实在是GCC的尴尬。

因为无法搞定xlC,所以也无法搞定OCCI,于是我要杀死AIX,在PowerPC的基础上搭建Linux系统。这下Oracle在编译的时候总该采用gcc来链接OCCI了吧! 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值