我正在尝试使用完整稳定的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
我该怎么办?
答案 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的确切链接。