免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 14242 | 回复: 6
打印 上一主题 下一主题

[C] 吐血问题,郁闷 /usr/bin/ld: cannot find -lclntsh [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-24 10:44 |只看该作者 |倒序浏览
在linux 我从一个用户那里copy了一个小项目源码加makefile
没想到在我的用户里就出现了 /usr/bin/ld: cannot find -lclntsh 这样的问题
makefile 如下

VPATH=../bin : ../src : ../lib : ../include
bin=../bin/
src=../src/
lib=../lib/
inc=../include/

all : server client

client : client.o client_assist.o tools.o clientlib.o client_assist.h structs.h stddef.h
gcc $(lib)client_assist.o $(lib)client.o $(lib)tools.o $(lib)clientlib.o -o $(bin)$@
server : server.o tools.o serverlib.o structs.h stddef.h
gcc $(lib)server.o $(lib)tools.o $(lib)serverlib.o $(lib)operdb.o -L$$ORACLE_HOME/lib -lclntsh -o $(bin)$@
server.o : server.c structs.h stddef.h
gcc -g -c $(src)server.c -o $(lib)$@
client_assist.o : client_assist.c structs.h stddef.h
gcc -g -c $(src)client_assist.c -o $(lib)$@
client.o : client.c structs.h stddef.h
gcc -g -c $(src)client.c -o $(lib)$@
tools.o : tools.c tools.h structs.h stddef.h
gcc -g -c $(src)tools.c -o $(lib)$@
clientlib.o : clientlib.c clientlib.h structs.h stddef.h
gcc -g -c $(src)clientlib.c -o $(lib)$@
serverlib.o : serverlib.c serverlib.h operdb.o structs.h stddef.h
gcc -g -c $(src)serverlib.c -o $(lib)$@
operdb.o : operdb.c operdb.pc operdb.h structs.h stddef.h
proc $(src)operdb.pc  
gcc -g -c $(src)operdb.c -I$ORACLE_HOME/precomp/public -o $(lib)$@

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
2 [报告]
发表于 2008-08-24 11:07 |只看该作者

回复 #1 dreameng7 的帖子

clntsh库文件貌似是Oracle带的?你搜一下这个库文件名,是不是文件名中带Oracle的版本号了?
比如:libclntsh8.so

论坛徽章:
0
3 [报告]
发表于 2008-08-24 21:13 |只看该作者
1 确信安装了oracle客户端软件,10g及以后版本有instant client,不用安装,解压后即可使用
2 要连结的库在Makefile里面是正确的,确信正确设置了环境变量ORACLE_HOME.另外,环境变量NLS_LANG也要正确设置,否则程序可能不能正常读写字段中的中文。
-L$$ORACLE_HOME/lib  这句好像多了个$  建议改为-L$(ORACLE_HOME)/lib

[ 本帖最后由 codefan 于 2008-8-24 21:16 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2008-08-25 08:16 |只看该作者

回复 #3 codefan 的帖子

谢谢你的帮助  。 源程序在原用户里运行一切正常,应该和监听以及-L$$ORACLE_HOME/lib 没有关系  很郁闷

论坛徽章:
0
5 [报告]
发表于 2008-08-25 08:17 |只看该作者
原帖由 happy_fish100 于 2008-8-24 11:07 发表
clntsh库文件貌似是Oracle带的?你搜一下这个库文件名,是不是文件名中带Oracle的版本号了?
比如:libclntsh8.so


我试过了,还是不行,还是要谢谢你的帮助!

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
6 [报告]
发表于 2008-08-25 10:06 |只看该作者

回复 #5 dreameng7 的帖子

搜一下在$(ORACLE_HOME)/lib目录下有没有类似这个文件名的库文件呢?

论坛徽章:
0
7 [报告]
发表于 2008-09-02 16:55 |只看该作者
确认一下$ORACLE_HOME/lib目录下有libclntsh.a,如果没有就从别的机器上COPY一个过来,放到ORACLE_HOME的lib下,如果有,并且被别的程序执行了ln -s软连接,那尝试一下,去掉连接,直接rm掉连接文件就行
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP