编译错误:/usr/bin/ld:找不到-lclntsh

编译错误:/usr/bin/ld:找不到-lclntsh,c,compilation,linker,C,Compilation,Linker,在尝试使用make file编译C程序时,我遇到了下面描述的链接错误 我知道这类问题已经在许多其他帖子中讨论过了,但我尝试了其中提出的解决方案,但都不起作用 /usr/bin/ld:找不到-lclntsh libclntsh.so和libclntsh.so.10.1存在于oracle路径/u01/app/oracle/product/10.2.0/lib中,在make文件中作为-L选项提供。但我仍然面临着这个问题:- Linking yieldrpt ... cc -v -g -D_HPUX_S

在尝试使用make file编译C程序时,我遇到了下面描述的链接错误

我知道这类问题已经在许多其他帖子中讨论过了,但我尝试了其中提出的解决方案,但都不起作用

/usr/bin/ld:找不到-lclntsh


libclntsh.so和libclntsh.so.10.1存在于oracle路径/u01/app/oracle/product/10.2.0/lib中,在make文件中作为-L选项提供。但我仍然面临着这个问题:-

Linking yieldrpt ...
cc -v -g -D_HPUX_SOURCE -DPARETO -Wl,-aarchive -L/u01/app/oracle/product/10.2.0/lib/         yieldrpt.o  -lclntsh `cat /u01/app/oracle/product/10.2.0/lib/ldflags`   -lmalloc -ldl -lm   \
                -lmalloc -o yieldrpt
Using built-in specs.
Target: i386-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --disable-plugin --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --with-cpu=generic --host=i386-redhat-linux
Thread model: posix
gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)
/usr/libexec/gcc/i386-redhat-linux/4.1.2/collect2 --eh-frame-hdr -m elf_i386 --hash-style=gnu -dynamic-linker /lib/ld-linux.so.2 -o yieldrpt /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crt1.o /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crti.o /usr/lib/gcc/i386-redhat-linux/4.1.2/crtbegin.o -L/u01/app/oracle/product/10.2.0/lib/ -L/usr/lib/gcc/i386-redhat-linux/4.1.2 -L/usr/lib/gcc/i386-redhat-linux/4.1.2 -L/usr/lib/gcc/i386-redhat-linux/4.1.2/../../.. -aarchive yieldrpt.o -lclntsh -lnbeq10 -lnhost10 -lnus10 -lnldap10 -lldapclnt10 -lnsslb10 -lntcp10 -lntcps10 -lnsslb10 -lntcp10 -lntns10 -lmalloc -ldl -lm -lmalloc -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/i386-redhat-linux/4.1.2/crtend.o     /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crtn.o
/usr/bin/ld: cannot find -lclntsh
collect2: ld returned 1 exit status
make: *** [yieldrpt] Error 1
如果需要其他信息,请告诉我。
谢谢

您正在将
-aarchive
传递给链接器。这是一个HP/UX兼容性选项 这与
-Bstatic
同义,它指示链接器不链接动态链接 图书馆。因此,
libclntsh.so
被忽略。看

如果你不知道为什么会有这个选项,你可以删除它,然后再试一次。如果你 如果知道这是必要的,那么您必须找到静态库,包括
libclntsh.a

链接对象。

您正在将
-aarchive
传递给链接器。这是一个HP/UX兼容性选项 这与
-Bstatic
同义,它指示链接器不链接动态链接 图书馆。因此,
libclntsh.so
被忽略。看

如果你不知道为什么会有这个选项,你可以删除它,然后再试一次。如果你 如果知道这是必要的,那么您必须找到静态库,包括
libclntsh.a

链接到。

如果已经安装了libclntsh.so.12.1或类似版本,则可以尝试使用以下命令将库符号链接到libclntsh.so:ln-s/usr/lib/oracle/12.1/client64/libclntsh.so.12.1/usr/lib/oracle/12.1/client64/lib/libclntsh.so

如果已经安装了libclntsh.so.12.1或类似版本,则可以尝试使用以下命令将库符号链接到libclntsh.so:ln-s/usr/lib/oracle/12.1/client64/lib/libclntsh.so.12.1/usr/lib/oracle/12.1/client64/lib/libclntsh.so

可能是32位对64位的问题?请
ls-alg/u01/app/oracle/product/10.2.0/lib/*clntsh*
/u01/app/oracle/product/10.2.0/lib/clntsh.map/u01/app/oracle/product/10.2.0/lib/libclntsh.so->libclntsh.so.10.1/u01/app/oracle/product/10.2.0/lib/libclntsh.so.10.1@ammoq:令人惊讶的是,lib和lib32在10.2版的oracle安装中指向同一个文件夹。这真的会有问题吗?可能是32位对64位的问题?请
ls-alg/u01/app/oracle/product/10.2.0/lib/*clntsh*
/u01/app/oracle/product/10.2.0/lib/clntsh.map/u01/app/oracle/product/10.2.0/lib/libclntsh.so->/libclntsh.10.1/u01/oracle/product/10.2.0/lib/libclntsh.so.10.1@ammoq:令人惊讶的是lib和lib32都指向了到我的oracle安装10.2中的同一文件夹。这真的会是一个问题吗?虽然这个答案非常缺乏信息,但它确实告诉我,我的问题是编译器没有找到
libclntsh.so
。我的问题是,我需要一个软链接让我的编译器找到上面提到的文件。一旦我这样做了,它就工作了==>
ln-s libclntsh.so.11.1 libclntsh.so
。虽然这个答案非常缺乏信息性,但它确实告诉我,我的问题是编译器没有找到
libclntsh.so
。我的问题是,我需要一个软链接让我的编译器找到上面提到的文件。一旦我这样做了,它就工作了==>
ln-s libclntsh.so.11.1 libclntsh.so
[oracle@em12c bin]$ pwd
/u01/em12c/middleware/oms/bin
[oracle@em12c bin]$ export ORACLE_HOME=/u01/em12c/middleware/oms
[oracle@em12c bin]$ ./genclntsh

[oracle@em12c bin]$ ls -l /u01/em12c/middleware/oms/lib32//libclntsh.so
lrwxrwxrwx. 1 oracle oinstall 17 Oct 23 22:16 /u01/em12c/middleware/oms/lib32//libclntsh.so -> libclntsh.so.11.1