gcc如何找到libc.so.6?

时间:2017-11-23 10:31:01

标签: c++ c gcc glibc libc

sscanf_test。是一个简单的C文件,它可以通过简单的编译命令成功运行。

$gcc sscanf_test.c -I/si/usr/aa/include/arch -o sscanf_test_2 

当我按如下方式添加一些-L选项时,它不起作用。

$gcc sscanf_test.c -I/si/usr/aa/include/arch -o sscanf_test_2  -m64  -L$ORACLE_HOME/precomp/lib/ -L$ORACLE_HOME/lib/ -L$ORACLE_HOME/lib/stubs/
/tmp/ccq1Z6T1.o:function ‘main’:
sscanf_test.c:(.text+0x32):undefined reference to ‘__isoc99_sscanf’
sscanf_test.c:(.text+0xf8):undefined reference to ‘__isoc99_sscanf’
sscanf_test.c:(.text+0x1e4):undefined reference to‘__isoc99_sscanf’
collect2: ld return 1

当我将/lib64/libc.so添加到编译命令时,它会成功编译。

$gcc sscanf_test.c -I/si/usr/aa/include/arch -o sscanf_test_2  -m64  -L$ORACLE_HOME/precomp/lib/ -L$ORACLE_HOME/lib/ -L$ORACLE_HOME/lib/stubs/ /lib64/libc.so.6
$

它可能是由$ ORACLE_HOME / lib / stubs /引起的,其中包含一个可能不正确的libc.so.6。

ETS:~ # find / -name libc.so.6
/home2/oracle/product/11gr2/db/lib/stubs/libc.so.6
/lib/libc.so.6
/lib64/libc.so.6

但我想知道为什么gcc无法识别其他路径。我在另一台机器上运行它,该机器具有与此系统(SUSE 11 SP3),gcc版本(4.3),glibc版本(2.11)类似的环境,它与gcc sscanf_test.c -I/si/usr/aa/include/arch -o sscanf_test_2 -m64 -L$ORACLE_HOME/precomp/lib/ -L$ORACLE_HOME/lib/ -L$ORACLE_HOME/lib/stubs/正常工作

这真是莫名其妙。它是由一些环境参数引起的,我没有正确设置?你能给我一些建议吗?

0 个答案:

没有答案