静态可执行文件编译错误:未定义引用

时间:2013-10-20 16:06:12

标签: c linux arm

我正在尝试使用完整稳定的GCC 4.4.0编译一个简单的“hello world”程序。当我尝试编译动态可执行文件时,每件事情都可以。但是当我尝试编译静态可执行文件时,我得到错误“未定义的printf参考”。在我尝试在静态模式下编译的每个程序中都是一样的。它无法识别libc函数。即使使用“-nostdlib”或“-lc”也是如此!此外,“-L ${LD_LIBRARY_PATH}”无法解决此问题。

./ccL10382.o: In function `main':
test.c:(.text+0x4): undefined reference to `printf'
collect2: ld returned 1 exit status

我该怎么办?

1 个答案:

答案 0 :(得分:0)

首先,查看libc.a.看起来应该在/system/android-gcc-4.4.0/sysroot/usr/lib/中。 所以你需要执行:

nm /system/android-gcc-4.4.0/sysroot/usr/lib/libc.a | grep printf

如果存在printf,则链接参数存在问题。可以通过向gcc命令行添加标志 -v 来验证它。仔细检查输出以了解libc的确切链接。