0

我正在尝试使用完整且稳定的 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

我应该怎么办?

4

1 回答 1

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 链接的确切内容。

于 2013-10-20T19:27:15.310 回答