Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 静态可执行文件编译错误:未定义对的引用_C_Linux_Arm - Fatal编程技术网

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

C 静态可执行文件编译错误:未定义对的引用,c,linux,arm,C,Linux,Arm,我正在尝试使用完整稳定的GCC4.4.0编译一个简单的“HelloWorld”程序。当我尝试编译一个动态可执行文件时,一切都正常,但当我尝试编译静态可执行文件时,我得到错误“未定义对printf的引用”。在我试图以静态模式编译的每个程序中都是一样的。它不能识别libc函数。即使使用“-nostlib”或“-lc”也一样!而且“-L${LD\u LIBRARY\u PATH}”也不能修复它 ./ccL10382.o: In function `main': test.c:(.text+0x4):

我正在尝试使用完整稳定的GCC4.4.0编译一个简单的“HelloWorld”程序。当我尝试编译一个动态可执行文件时,一切都正常,但当我尝试编译静态可执行文件时,我得到错误“未定义对printf的引用”。在我试图以静态模式编译的每个程序中都是一样的。它不能识别libc函数。即使使用“
-nostlib
”或“
-lc
”也一样!而且“
-L${LD\u LIBRARY\u PATH}
”也不能修复它

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

我该怎么办?

首先,看看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,则链接参数有问题。可以通过将标志-v添加到gcc命令行来验证。仔细检查输出,以了解libc的确切链接。

带/不带
-nostlib
我也遇到了同样的错误,我猜-静态选项不适合您,是吗<代码>gcc-Wall-static-g-o test test.cgcc-Wall-static-g-o test.c test.c:2:警告:“main”的返回类型不是“int”/system/android-gcc-4.4.0/sysroot/usr/lib/crtbegin_dynamic.o:In function启动:bionic/libc/arch arm/bionic/crtbegin_dynamic.S:(.text+0x10):未定义引用
\uu libc\u init./ccx11630.o:In function
main':/data/a/ts/test.c:2:未定义引用
printf'collect2:ld返回了1个退出状态
可能与@alk重复,我找不到我的问题与您提到的链接中的问题有任何相似之处!