在AIX6.1下bash运行异常的解决
来源:互联网 发布:mc9s12x 串口编程 编辑:程序博客网 时间:2024/05/17 03:17
情景:
由于需要在AIX下运行基于OCI的程序。在.profile中设置了几个关键的环境变量:
LD_LIBRARY_PATH=/oracle/OraHome_1/lib:/usr/vacpp/lib:/lib:/usr/lib
ORACLE_HOME=/oracle/OraHome_1
. .profile让profile生效后。运行bash出现:
exec():0509-036 由于以下错误,不能装入程序 bash:
0509-022 不能装入模块 /opt/pware/lib/libintl.a(libintl.so.8)。
0509-150 未能装入从属模块 /lib/libiconv.a(libiconv.so.2)。
0509-152 在归档 中找不到成员 libiconv.so.2
0509-022 不能装入模块 bash。
0509-150 未能装入从属模块 /opt/pware/lib/libintl.a(libintl.so.8)。
0509-022 不能装入模块 。
分析:
1.
输入: which bash
得到:/opt/pware/bin/bash.得知其可执行程序bash在/opt/pware/bin目录下。
2.进入/opt/pware/bin目录下:
输入:ldd bash
得到如下输出结果:
bash 需要:
/usr/lib/libcurses.a(shr42.o)
/opt/pware/lib/libintl.a(libintl.so.8)
/usr/lib/libpthread.a(shr_xpg5.o)
/usr/lib/libc.a(shr.o)
/usr/lib/librtl.a(shr.o)
/opt/pware/lib/libiconv.a(libiconv.so.2)
/usr/lib/libpthreads.a(shr_comm.o)
/unix
/usr/lib/libcrypt.a(shr.o)
3.结合可执行程序依赖的动态库和运行bash的报错,分析可能是可执行程序实际加载的libintl.a或libiconv.so.2不是 这个目录下的: /opt/pware/lib/libintl.a(libintl.so.8)。导致程序动态库链接在运行 阶段链接到版本不合适的库文件。
让我们来看看LD_LIBRARY_PATH=/oracle/OraHome_1/lib:/usr/vacpp/lib:/lib:/usr/lib中/lib中有没有libintl.a相关的设置:
进入/lib目录,运行ls -l|grep libintl.a
得到输出:
lrwxrwxrwx 1 root system 32 7月19 12时55 libintl.a ->../../opt/freeware/lib/libintl.a
结论:果然设置的LD_LIBRARY_PATH中对libintl.a的链接目录指向了../../opt/freeware/lib。而bash中需要的libintl.a来自 /opt/pware/lib
所以在LD_LIBRARY_PATH中去掉/lib。bash最总能够运行了!
总结:不管是用户进程还是系统命令,在运行阶段,需要连接进来动态库时,都优先扫其关心的环境变量。如果有其需要的动态库,就将其链接到进程空间。这就覆盖了程序本身声明的动态库路径寻找。导致版本不符出现模块不能加载的错误。
所以在环境变量中设置库路径时应该避免设置被错误覆盖的问题。这个在Mq编程中也有所暴露:
LD_LIBRARY_PATH=/usr/mqm/lib:/oracle/OraHome_1/lib32:/usr/vacpp/lib:/lib。这个链接是Mq的32的库路径。结果Mq7.X版本的命令都是64位的。这些命令运行时扫LD_LIBRARY_PATH时加载了这些土鳖32位库。导致命令不能运行。报幻数出错。
所有要不就不设置/usr/mqm/lib,如果必须设置,就必须设置/usr/mqm/lib64 !!!!!!!!!
- 在AIX6.1下bash运行异常的解决
- 在AIX6.1下编译python版的cx_Oracle报cx_Oracle错误
- Aix6.1 安装 Bash Shell环境
- 在64位AIX6.1下安装SAP JCo
- Aix6.1下安装SWFTools
- AIX6.1下编译librdkafka
- 在windowx下运行cygwin出行 bash-3.02$ (bash-2.05b$)等类似问题的解决办法:
- 在windowx下运行cygwin出行 bash-3.02$ (bash-2.05b$)等类似问题的解决办法:
- ubuntu下shell脚本运行异常:bash和dash的区别
- ubuntu下shell脚本运行异常:bash和dash的区别
- ubuntu下shell脚本运行异常:bash和dash的区别
- Ubuntu下shell脚本运行异常:bash和dash的区别
- Ubuntu下shell脚本运行异常:bash和dash的区别
- buntu下shell脚本运行异常:bash和…
- AIX6.1下安装SSH服务
- AIX6.1下安装SSH服务
- 在AIX6.1上首次安装SSH
- 在AIX6.1上安装gcc
- ibatis2.3取执行的sql及参数
- 基础的Linux常用命令
- AVI破解及Android2.3实现
- JSP2自定义标签(一)——简单标签
- MFC Unicode 到 ansi 的转换
- 在AIX6.1下bash运行异常的解决
- 软件项目版本号的命名格式
- 存储过程分割一个字段为多个值
- EVC4安装
- u-boot-2009.08在2440上的移植详解(一)
- PCB attention_update
- AVI文件在opencore框架下的解析
- RM/RMVB文件格式总结
- 关于NSArray的排序问题