HP-UX /usr/lib/dld.sl: Can't open shared library:解决办法
来源:互联网 发布:网络彩票代理平台 编辑:程序博客网 时间:2024/05/22 06:43
我在HP-UX上编译完一个程序的时候,ldd 这个binary的时候发现程序link的lib并不是按照我在环境变量中设置的SHLIB_PATH,而是取了其他值.这个很奇怪,感觉link 的lib被hardcode。
ldd $ARBORBIN/MRM
/usr/lib/libdld.2 => /usr/lib/libdld.2
/usr/lib/libc.2 => /usr/lib/libc.2
/usr/lib/libdld.2 => /usr/lib/libdld.2
/usr/lib/libxti.2 => /usr/lib/libxti.2
/usr/lib/libc.2 => /usr/lib/libc.2
/usr/lib/libm.2 => /usr/lib/libm.2
/usr/lib/libcl.2 => /usr/lib/libcl.2
/usr/lib/libisamstub.1 => /usr/lib/libisamstub.1
/usr/lib/libdld.2 => /usr/lib/libdld.2
/usr1/arbor/3p/oracle/HPUX/lib/libclntsh.sl.9.0 => /usr1/arbor/3p/oracle/HPUX/lib/libclntsh.sl.9.0
/usr/lib/libcl.2 => /usr/lib/libcl.2
/usr/lib/libc.2 => /usr/lib/libc.2
/usr/lib/libm.2 => /usr/lib/libm.2
/usr/lib/libdld.2 => /usr/lib/libdld.2
/usr/lib/libnss_dns.1 => /usr/lib/libnss_dns.1
/usr/lib/libdld.2 => /usr/lib/libdld.2
/usr/lib/libpthread.1 => /usr/lib/libpthread.1
/usr/lib/librt.2 => /usr/lib/librt.2
/db/ora_mnt1/app/oracle/product/9.2.0.5_Client/lib32/libwtc9.sl => /usr1/arbor/3poracle/HPUX/lib/libwtc9.sl
/usr/lib/libpthread.1 => /usr/lib/libpthread.1
/usr1/arbor/src/lib/liboam_emit.sl => /usr1/arbor/src/lib/liboam_emit.sl
/usr/lib/libstd_v2.2 => /usr/lib/libstd_v2.2
/usr/lib/libCsup_v2.2 => /usr/lib/libCsup_v2.2
/usr1/arbor/src/lib/libismutil.sl => /usr1/arbor/src/lib/libismutil.sl
env |grep SH
这样子的话,当程序放到客户的环境上是,客户那根本没有/usr1/arbor/3p/oracle/HPUX/lib这个目录,肯定就是找不到这个文件了.
于是在客户的环境上,出现了以下问题:
celcom@milhpit1@CELTCUS:/home/tss/celcom/celcom_tss/yyang 35 : ./MRM
/usr/lib/dld.sl: Can't open shared library: /usr1/arbor/3p/oracle/HPUX/lib/libclntsh.sl.9.0
/usr/lib/dld.sl: No such file or directory
Abort (core dumped)
celcom@milhpit1@CELTCUS:/home/tss/celcom/celcom_tss/yyang 54 : ldd MRM
/usr/lib/libdld.2 => /usr/lib/libdld.2
/usr/lib/libc.2 => /usr/lib/libc.2
/usr/lib/libdld.2 => /usr/lib/libdld.2
/usr/lib/libxti.2 => /usr/lib/libxti.2
/usr/lib/libc.2 => /usr/lib/libc.2
/usr/lib/libm.2 => /usr/lib/libm.2
/usr/lib/libcl.2 => /usr/lib/libcl.2
/usr/lib/libisamstub.1 => /usr/lib/libisamstub.1
/usr/lib/libdld.2 => /usr/lib/libdld.2
/usr/lib/dld.sl: Can't open shared library: /usr1/arbor/3p/oracle/HPUX/lib/libclntsh.sl.9.0
/usr/lib/dld.sl: No such file or directory
最后找到一个workaround方法,就是不用改程序,只是用chatr +s enable MRM
celcom@milhpit1@CELTCUS:/home/tss/celcom/celcom_tss/yyang 61 : chatr +s enable MRM
MRM:
current values:
normal executable
shared library dynamic path search:
SHLIB_PATH disabled second
embedded path disabled first Not Defined
shared library list:
dynamic /usr1/arbor/src/lib/libismutil.sl
dynamic /usr/lib/libCsup_v2.2
dynamic /usr/lib/libstd_v2.2
dynamic /usr1/arbor/src/lib/liboam_emit.sl
dynamic /usr/lib/libpthread.1
dynamic /usr1/arbor/3p/oracle/HPUX/lib/libclntsh.sl.9.0
dynamic /usr/lib/libcl.2
dynamic /usr/lib/libm.2
dynamic /usr/lib/libc.2
dynamic /usr/lib/libxti.2
static /usr/lib/libdld.2
shared library binding:
deferred
global hash table disabled
plabel caching disabled
global hash array size:1103
global hash array nbuckets:3
shared vtable support disabled
explicit unloading enabled
static branch prediction disabled
executable from stack: D (default)
kernel assisted branch prediction enabled
lazy swap allocation disabled
text segment locking disabled
data segment locking disabled
third quadrant private data space disabled
fourth quadrant private data space disabled
third quadrant global data space disabled
data page size: D (default)
instruction page size: D (default)
nulptr references disabled
shared library private mapping disabled
shared library text merging disabled
new values:
normal executable
shared library dynamic path search:
SHLIB_PATH enabled second
embedded path disabled first Not Defined
shared library list:
dynamic /usr1/arbor/src/lib/libismutil.sl
dynamic /usr/lib/libCsup_v2.2
dynamic /usr/lib/libstd_v2.2
dynamic /usr1/arbor/src/lib/liboam_emit.sl
dynamic /usr/lib/libpthread.1
dynamic /usr1/arbor/3p/oracle/HPUX/lib/libclntsh.sl.9.0
dynamic /usr/lib/libcl.2
dynamic /usr/lib/libm.2
dynamic /usr/lib/libc.2
dynamic /usr/lib/libxti.2
static /usr/lib/libdld.2
shared library binding:
deferred
global hash table disabled
plabel caching disabled
global hash array size:1103
global hash array nbuckets:3
shared vtable support disabled
explicit unloading enabled
static branch prediction disabled
executable from stack: D (default)
kernel assisted branch prediction enabled
lazy swap allocation disabled
text segment locking disabled
data segment locking disabled
third quadrant private data space disabled
fourth quadrant private data space disabled
third quadrant global data space disabled
data page size: D (default)
instruction page size: D (default)
nulptr references disabled
shared library private mapping disabled
shared library text merging disabled
我们ldd看一下:
celcom@milhpit1@CELTCUS:/home/tss/celcom/celcom_tss/yyang 62 : ldd MRM /usr/lib/libdld.2 => /usr/lib/libdld.2
/usr/lib/libc.2 => /lib/libc.2
/usr/lib/libdld.2 => /lib/libdld.2
/usr/lib/libxti.2 => /lib/libxti.2
/usr/lib/libc.2 => /lib/libc.2
/usr/lib/libm.2 => /lib/libm.2
/usr/lib/libcl.2 => /lib/libcl.2
/usr/lib/libisamstub.1 => /lib/libisamstub.1
/usr/lib/libdld.2 => /lib/libdld.2
/usr1/arbor/3p/oracle/HPUX/lib/libclntsh.sl.9.0 => /opt/app/oracle/product/9.2.0.5/lib32/libclntsh.sl.9.0
/usr/lib/libcl.2 => /lib/libcl.2
/usr/lib/libc.2 => /lib/libc.2
/usr/lib/libm.2 => /lib/libm.2
/usr/lib/libdld.2 => /lib/libdld.2
/usr/lib/libnss_dns.1 => /lib/libnss_dns.1
/usr/lib/libdld.2 => /lib/libdld.2
/usr/lib/libpthread.1 => /lib/libpthread.1
/usr/lib/librt.2 => /lib/librt.2
/opt/app/oracle/product/9.2.0.5/lib32/libwtc9.sl => /opt/app/oracle/product/9.2.0.5/lib32/libwtc9.sl
/usr/lib/libpthread.1 => /lib/libpthread.1
/usr1/arbor/src/lib/liboam_emit.sl => /home/tss/celcom/celcom_tss/site_specific/lib/liboam_emit.sl
/usr/lib/libstd_v2.2 => /lib/libstd_v2.2
/usr/lib/libCsup_v2.2 => /lib/libCsup_v2.2
ldd $ARBORBIN/MRM
/usr/lib/libdld.2 => /usr/lib/libdld.2
/usr/lib/libc.2 => /usr/lib/libc.2
/usr/lib/libdld.2 => /usr/lib/libdld.2
/usr/lib/libxti.2 => /usr/lib/libxti.2
/usr/lib/libc.2 => /usr/lib/libc.2
/usr/lib/libm.2 => /usr/lib/libm.2
/usr/lib/libcl.2 => /usr/lib/libcl.2
/usr/lib/libisamstub.1 => /usr/lib/libisamstub.1
/usr/lib/libdld.2 => /usr/lib/libdld.2
/usr1/arbor/3p/oracle/HPUX/lib/libclntsh.sl.9.0 => /usr1/arbor/3p/oracle/HPUX/lib/libclntsh.sl.9.0
/usr/lib/libcl.2 => /usr/lib/libcl.2
/usr/lib/libc.2 => /usr/lib/libc.2
/usr/lib/libm.2 => /usr/lib/libm.2
/usr/lib/libdld.2 => /usr/lib/libdld.2
/usr/lib/libnss_dns.1 => /usr/lib/libnss_dns.1
/usr/lib/libdld.2 => /usr/lib/libdld.2
/usr/lib/libpthread.1 => /usr/lib/libpthread.1
/usr/lib/librt.2 => /usr/lib/librt.2
/db/ora_mnt1/app/oracle/product/9.2.0.5_Client/lib32/libwtc9.sl => /usr1/arbor/3poracle/HPUX/lib/libwtc9.sl
/usr/lib/libpthread.1 => /usr/lib/libpthread.1
/usr1/arbor/src/lib/liboam_emit.sl => /usr1/arbor/src/lib/liboam_emit.sl
/usr/lib/libstd_v2.2 => /usr/lib/libstd_v2.2
/usr/lib/libCsup_v2.2 => /usr/lib/libCsup_v2.2
/usr1/arbor/src/lib/libismutil.sl => /usr1/arbor/src/lib/libismutil.sl
env |grep SH
15:SHLIB_PATH=/usr1/arbor/3pACE/ACE_wrappers/build/HPUX/ace:/usr1/arbor/3p/rosette/HPUX/rel/lib/
:/opt/app/oracle/product/9.2.0.5/lib32:/usr1/arbor/idesign_site/lib:/usr1/arbor/3pxml/xerces/HPUX/lib:/app/arborperl/5.8.2/lib.....
这样子的话,当程序放到客户的环境上是,客户那根本没有/usr1/arbor/3p/oracle/HPUX/lib这个目录,肯定就是找不到这个文件了.
于是在客户的环境上,出现了以下问题:
celcom@milhpit1@CELTCUS:/home/tss/celcom/celcom_tss/yyang 35 : ./MRM
/usr/lib/dld.sl: Can't open shared library: /usr1/arbor/3p/oracle/HPUX/lib/libclntsh.sl.9.0
/usr/lib/dld.sl: No such file or directory
Abort (core dumped)
celcom@milhpit1@CELTCUS:/home/tss/celcom/celcom_tss/yyang 54 : ldd MRM
/usr/lib/libdld.2 => /usr/lib/libdld.2
/usr/lib/libc.2 => /usr/lib/libc.2
/usr/lib/libdld.2 => /usr/lib/libdld.2
/usr/lib/libxti.2 => /usr/lib/libxti.2
/usr/lib/libc.2 => /usr/lib/libc.2
/usr/lib/libm.2 => /usr/lib/libm.2
/usr/lib/libcl.2 => /usr/lib/libcl.2
/usr/lib/libisamstub.1 => /usr/lib/libisamstub.1
/usr/lib/libdld.2 => /usr/lib/libdld.2
/usr/lib/dld.sl: Can't open shared library: /usr1/arbor/3p/oracle/HPUX/lib/libclntsh.sl.9.0
/usr/lib/dld.sl: No such file or directory
最后找到一个workaround方法,就是不用改程序,只是用chatr +s enable MRM
celcom@milhpit1@CELTCUS:/home/tss/celcom/celcom_tss/yyang 61 : chatr +s enable MRM
MRM:
current values:
normal executable
shared library dynamic path search:
SHLIB_PATH disabled second
embedded path disabled first Not Defined
shared library list:
dynamic /usr1/arbor/src/lib/libismutil.sl
dynamic /usr/lib/libCsup_v2.2
dynamic /usr/lib/libstd_v2.2
dynamic /usr1/arbor/src/lib/liboam_emit.sl
dynamic /usr/lib/libpthread.1
dynamic /usr1/arbor/3p/oracle/HPUX/lib/libclntsh.sl.9.0
dynamic /usr/lib/libcl.2
dynamic /usr/lib/libm.2
dynamic /usr/lib/libc.2
dynamic /usr/lib/libxti.2
static /usr/lib/libdld.2
shared library binding:
deferred
global hash table disabled
plabel caching disabled
global hash array size:1103
global hash array nbuckets:3
shared vtable support disabled
explicit unloading enabled
static branch prediction disabled
executable from stack: D (default)
kernel assisted branch prediction enabled
lazy swap allocation disabled
text segment locking disabled
data segment locking disabled
third quadrant private data space disabled
fourth quadrant private data space disabled
third quadrant global data space disabled
data page size: D (default)
instruction page size: D (default)
nulptr references disabled
shared library private mapping disabled
shared library text merging disabled
new values:
normal executable
shared library dynamic path search:
SHLIB_PATH enabled second
embedded path disabled first Not Defined
shared library list:
dynamic /usr1/arbor/src/lib/libismutil.sl
dynamic /usr/lib/libCsup_v2.2
dynamic /usr/lib/libstd_v2.2
dynamic /usr1/arbor/src/lib/liboam_emit.sl
dynamic /usr/lib/libpthread.1
dynamic /usr1/arbor/3p/oracle/HPUX/lib/libclntsh.sl.9.0
dynamic /usr/lib/libcl.2
dynamic /usr/lib/libm.2
dynamic /usr/lib/libc.2
dynamic /usr/lib/libxti.2
static /usr/lib/libdld.2
shared library binding:
deferred
global hash table disabled
plabel caching disabled
global hash array size:1103
global hash array nbuckets:3
shared vtable support disabled
explicit unloading enabled
static branch prediction disabled
executable from stack: D (default)
kernel assisted branch prediction enabled
lazy swap allocation disabled
text segment locking disabled
data segment locking disabled
third quadrant private data space disabled
fourth quadrant private data space disabled
third quadrant global data space disabled
data page size: D (default)
instruction page size: D (default)
nulptr references disabled
shared library private mapping disabled
shared library text merging disabled
我们ldd看一下:
celcom@milhpit1@CELTCUS:/home/tss/celcom/celcom_tss/yyang 62 : ldd MRM /usr/lib/libdld.2 => /usr/lib/libdld.2
/usr/lib/libc.2 => /lib/libc.2
/usr/lib/libdld.2 => /lib/libdld.2
/usr/lib/libxti.2 => /lib/libxti.2
/usr/lib/libc.2 => /lib/libc.2
/usr/lib/libm.2 => /lib/libm.2
/usr/lib/libcl.2 => /lib/libcl.2
/usr/lib/libisamstub.1 => /lib/libisamstub.1
/usr/lib/libdld.2 => /lib/libdld.2
/usr1/arbor/3p/oracle/HPUX/lib/libclntsh.sl.9.0 => /opt/app/oracle/product/9.2.0.5/lib32/libclntsh.sl.9.0
/usr/lib/libcl.2 => /lib/libcl.2
/usr/lib/libc.2 => /lib/libc.2
/usr/lib/libm.2 => /lib/libm.2
/usr/lib/libdld.2 => /lib/libdld.2
/usr/lib/libnss_dns.1 => /lib/libnss_dns.1
/usr/lib/libdld.2 => /lib/libdld.2
/usr/lib/libpthread.1 => /lib/libpthread.1
/usr/lib/librt.2 => /lib/librt.2
/opt/app/oracle/product/9.2.0.5/lib32/libwtc9.sl => /opt/app/oracle/product/9.2.0.5/lib32/libwtc9.sl
/usr/lib/libpthread.1 => /lib/libpthread.1
/usr1/arbor/src/lib/liboam_emit.sl => /home/tss/celcom/celcom_tss/site_specific/lib/liboam_emit.sl
/usr/lib/libstd_v2.2 => /lib/libstd_v2.2
/usr/lib/libCsup_v2.2 => /lib/libCsup_v2.2
/usr1/arbor/src/lib/libismutil.sl => /home/tss/celcom/celcom_tss/site_specific/lib/libismutil.sl
in summary :The chatr +s enable option allows a program to utilize SHLIB_PATH to locate shared libraries.
0 0
- HP-UX /usr/lib/dld.sl: Can't open shared library:解决办法
- /usr/lib/dld.sl: Can't find path for shared library
- mysql提权提示can't open shared library 'udf.dll'解决办法
- ORACLE:ORA-03113 /usr/lib/dld.sl: Unresolved symbol: gethrtime (code)
- HP-UX /usr 扩容
- [01000] [unixODBC][Driver Manager]Can't open lib '/usr/lib64/libmyodbc5.so' : file not found
- Can't open lib '/usr/lib64/libmyodbc5.so' : file not found
- rman: can't open target的解决办法
- /usr/lib/uwsgi/plugins/python_plugin.so: cannot open shared object file: No such file or directory
- locate: can not open `/var/lib/mlocate/mlocate.db' 解决办法
- Can't open a connection to site 'SYB_BACKUP' 解决办法
- E:Can't open /cache/recovery/command 解决办法
- Error occurred: install_driver(mysql) failed: Can't load '/usr/lib/perl5/site_perl/5.8.8/i386-linux-
- failed to load the jni shared library"/usr/local/java/jdk1.6.0_21/bin/../jre/lib/i386/client/libjvm.
- WARNING: CAN’T OPEN CONFIG FILE: /USR/LOCAL/SSL/OPENSSL.CNF
- Can't open file /usr/share/vim/vim73/syntax/syntax.vim
- can't open display
- CAN'T OPEN DISPLAY
- linux I/O模型
- Android 6.0 Libc库中的弱引用使用
- 第一篇博客
- android开发代码安装app(需要指定路径)
- 获取session的几个方式
- HP-UX /usr/lib/dld.sl: Can't open shared library:解决办法
- 简单碰撞算法及其demo(屏幕气泡原理)
- 数组名及数组名的地址(还有一个小问题没解决)
- Segmentation Fault in Linux 原因与避免
- 高并发mysql update操作必定失败
- java XML转JSON格式
- 机器学习之——初识神经网络
- 屏幕适配
- 用小窗口循环扫描图像