执行make编译后
cc -o reg reg.o -L$(ORACLE_HOME)/lib -lclntsh 'cat /u01/app/oracle/product/8.1.7/lib/sysliblist' -ldl -lm出现以下的错误提示:
/usr/bin/ld : cannot find -lclntsh
collect2:ld returned 1 exit status 
平台:Red Linux 7.3 
数据库:Oracle 8.1.7(客户端安装模式加Pro*C程序)
请问这是缺少了安装哪些东西呢或是需要指定哪些路径?

解决方案 »

  1.   

    应该两行写到一行中
    或第一行打个反斜线
    cc -o reg reg.o -L$(ORACLE_HOME)/lib\
     -lclntsh 'cat /u01/app/oracle/product/8.1.7/lib/sysliblist' -ldl -lm
      

  2.   

    明白。这是我粘到这边时折行了。实际运行应该是没错的。
    我这边是这样
    include /home/banktran/src/tax_pub.mk
    APPNAME=reg
    $(APPNAME):$(APPNAME).O
       $(CC) -O $(APPNAME) $(APPNAME).o -L(LIBPATH) $(ORALIB)
    ....
    另外在tax_pub.mk定义
    LIBPATH=$(ORACLE_HOME)/lib
    ORALIB=-lclntsh 'cat /u01/app/oracle/product/8.1.7/lib/sysliblist'  \-ldl -lm
    对于以上的内容可以确保语法上书写肯定是无误的,并且是可实施的(因为以前在其他机器编译通过,这两天刚装了新的机器)。
    对此是否我安装oracle有误或是其他环境变量缺少了设定呢? 
      

  3.   

    不好意思了
    看来这个分数还得让我自己来挣了 
    问题找出来了:
    cd $ORACLE_HOME/lib
    ln -s libclntsh.so.8.0 libclntsh.so
    即可。
    这个主要是因为安装后系统为libclntsh.so.8.0,而加载时是不带版本号的。
    所以用ln来建个链接名为libclntsh.so即可解决以上的问题。
    不过还是得感谢一下大家的参与!