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/
正常工作
这真是莫名其妙。它是由一些环境参数引起的,我没有正确设置?你能给我一些建议吗?