一次AIX系统报错的问题处理思路


今天遇到一个同事在AIX 5.3环境中启动程序时报错的问题,错误截图如下:

其中报错内容如下:
$ ./MBAFileAgent
0509-036 Cannot load program ./MBAFileAgent because of the following errors:
0509-022 Cannot load module ./jre/bin/libstdc++.a(libstdc++.so.s).
0509-150  Dependent module libgcc_s_ppc64.a(shr.0) could not be loaded.
0509-022 Cannot load module libgcc_s_ppc64.a(shr.0).
0509-026 System error:A file or directory in the path name does not exist.
0509-022 Cannot load module MBAFileAgent.
0509-150   Depentdent module ./jre/bin/libstdc++.a(libstdc++.so.5) could not be loaded.
0509-022 Cannot load module.



问题的解决思路为:确认光盘补丁是否安装成功;文件路径问题;补丁编译问题。


AIX 5.3的补丁安装有两种方法:一种是RPM安装方法,一种是smit install安装方法

方法一:RPM安装方法
AIX 协作中心将重点推动关键技术领域的系统级创新,如虚拟、安全性、性能和可扩展性,该中心将帮助 ISV 们利用新的 IBM 硬件和软件功能来改进自己在 AIX 上运行的应用。

(1)下载AIX5.3安装所需文件

gcc-4.0.0-1.aix5.3.ppc.rpm,  
gcc-cplusplus-4.0.0-1.aix5.3.ppc.rpm,  
libgcc-4.0.0-1.aix5.3.ppc.rpm,  
libstdcplusplus-4.0.0-1.aix5.3.ppc.rpm,  
libstdcplusplus-devel-4.0.0-1.aix5.3.ppc.rpm  
地址为 http://www-03.ibm.com/servers/ai ... linux/download.html  


(2)因AIX5.3已默认安装rpm,故只需以root身份利用ftp将上述五个rpm文件上传到/usr/opt/freeware/src/packages/SOURCES(该目录aix中已有,并不象管理手册上所讲的--“要使用linux toolbox需要建立新的文件系统/opt/freeware”)



(3)以root身份在/usr/opt/freeware/src/packages/SOURCES执行命令

#rpm -ivh gcc-4.0.0-1.aix5.3.ppc.rpm  
#rpm -ivh libgcc-4.0.0-1.aix5.3.ppc.rpm 
 #rpm -ivh libstdcplusplus-4.0.0-1.aix5.3.ppc.rpm  
#rpm -ivh libstdcplusplus-devel-4.0.0-1.aix5.3.ppc.rpm  
#rpm -ivh gcc-cplusplus-4.0.0-1.aix5.3.ppc.rpm 
最多不超过一分钟gcc、gcc++安装完成,以普通用户登录,编一个“hello world”测试程序结果正确!这样,在AIX5.3中,我们就完成了gcc的安装。
注:单独的补丁包通常就可以使用这种方式安装。


方法二:smit install安装方法

安装AIX补丁包

1.       到fix central( http://www-933.ibm.com/support/fixcentral/)根据需要下载AIX补丁包
2.       将补丁包上传至需要更新的服务器
3.       在系统中运行命令“smitty installp”→“Update Installed Software to Latest Level (Update All)”,在“INPUT device / directory for software”项中直接输入补丁包的路径回车,
4.       在安装之前最好先模拟安装预览一下,将选项“PREVIEW only? (install operation will NOT occur)”改为“Yes”(用“ESC”+“4”选择),然后回车
5.       查看输出结果。输出结果为OK,则按“ESC”+“3”返回之前图1的界面。将选项“PREVIEW only? (install operation will NOT occur)”改为“No”,“COMMIT software updates?”改为“No”,“SAVE replaced files?”改为“Yes”,“ACCEPT new license agreements?”改为“Yes”,然后回车
6.       看到屏幕输出结果Ok,补丁即安装完毕。
注:这种方式也可以做补丁包升级时使用。
 
回退安装AIX的补丁包

回退只能对在安装补丁包的过程中通过将选项“COMMIT software updates?”设置为“No”,并且“SAVE replaced files?”设置为“Yes”安装的补丁。否则只能做删除操作,而不能做回退操作。
1.       在系统中运行命令“smitty install”→“Software Maintenance and Utilities”→“Reject Applied Software Updates (Use Previous Version)”
2.       在“SOFTWARE name”按“ESC”+“4”显示选择菜单,通过按“ESC”+“7”选择需要回退的补丁,然后回车,如图2
3.       再回退前还是先模拟预览一下,将选项“PREVIEW only? (install operation will NOT occur)”改为“Yes”(用“ESC”+“4”选择),然后回车
4.       查看输出结果。输出结果为OK,则按“ESC”+“3”返回之前图2的界面。将选项“PREVIEW only? (install operation will NOT occur)”改为“No”,然后回车
5.       看到屏幕输出结果Ok,补丁即回退完毕。
6.       回退完毕后,按“ESC”+“0”返回到命令行界面。输入命令“lslpp –l|grep XXXX”(XXXX为回退的补丁filesets)可以查看filesets是否回退到之前的版本。



另外有一种情况是路径造成的问题:
aix6.1 安装程序时报libstdc.so.6不能加载,
libstdc++-devel   4.2.0 (6.1)
 libstdc++             4.2.0 (6.1)
都已经安装了 ,菜鸟求指教

QQ截图20130807103110.png

解决方案:aix默认库安装位置为/opt下,而程序查找的位置是/usr/lib,所以拷贝库文件到/usr/lib下或做ln都可




还有一种需要专门C++编译的问题:
如果是要编译C++的话,要另外付费购买,不在系统盘里,有个专门的C++软件;
只要需要编译的话,就需要单独的C++安装盘;


你可能感兴趣的:(AIX)