gcc常连接的动态库小结


0.学习链接

Linux环境下gcc编译链接库-lz -lrt -lm -lc都是什么库?

建立软连接找到了oracle相关的库

Linux程序编译链接动态库版本的问题

1.gcc常连接的动态库

libocci.so是啥

-lz     是link libz,链接压缩库(Z)
-lrt    实时库(real time):shm_open系列
-lm     是link libm,链接数学库(math)
-lc     是link libc,链接标准C库(C lib)
-ldl    是显式加载动态库的动态函数库,如果你的程序中使用dlopen、dlsym、dlclose、dlerror显示加载动态库,需要设置链接选项-ldl
-lnsl    需要链接libnsl.so, libnsl.so是C网络服务的库
-lclntsh 需要链接libclntsh.so,是orcale客户端编译的时候需要用到的一个库,可以扒一扒
-lpthread  线程库
-lsnmp++   网络管理库
-locci     是指Oracle C++ Call Interface对应的动态库,(OCCI)驱动程序
-lCOS4 
-lCOSDynamic4 
-lomniCodeSets4 
-lomniDynamic4 
-lomniORB4 
-lomnithread  



libltdl.so 这个库是做什么用的?
libltdl.so ,这个库,我在看一个开源的源码是,看见调用它了。不知道这个是干什么用的?
网上找了找,和libtool有关,是调用系统库用的函数(也不是太确定)。但是还是不太明白。
它和其它的区别是什么?

2.动态库编译错误的记录

2.1 找不到libclntsh.so的一个记录

好记性不如烂笔头,之前在32位系统下解决了的问题,这次在64位系统下又碰到了,又是重来一遍的痛苦,
这次记下省的以后再为此头疼。

提示找不到libclntsh.so的动态库,从网上搜了好多,都试过了,不是很灵,看到网上有这样说的,

将$ORACLE_HOME/product/版本号/lib的路径加入到/etc/ld.so.conf,然后用root权限进行ldconfig,我这样操作了,还是提示找不到。


 

后来我看他说:
这个库是oracle的一个库 并不是放在/usr/lib下 所以gcc找不到路径
我明白了,是gcc找不到,于是我在/usr/lib下做了软连接 ln -s $ORACLE_HOME/lib/libclntsh.so libclntsh.so
这样你再找不到我可真无语了,果然,编译通过。
之前还有提示
Failed assertion [PGE Code=90105] 问题
是因为用户组不是dba组的原因,把用户所在的主用户组改为dba就OK了.

=============================================
其实编译的时候指定库的路径应该也可以吧.

3.运行时找不到库,ldd发现有库没有链接到,是因为在/etc/profile里面没有加在LD_LIBRART_PATH中,这个必须在环境变量中能链接到才可以正确地被链接到文件中,还要注意用户的环境变量和权限的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值