Android ndk 未定义对`u errno_位置';

Android ndk 未定义对`u errno_位置';,android-ndk,Android Ndk,我正在为ndk编译应用程序,收到错误“未定义对“\uu errno\u位置”的引用” 错误来自一条线 sprintf( buff, "%s TIOCMGET failed: %s\n", buff, strerror(errno) ); 如果我评论这一行,链接器不会抱怨同样的内容,否则它会抱怨 我正在尝试使用Sourcery G++Lite的arm none linux gnueabi gcc工具链为android构建我自己的可执行文件。据我所知,您的编译器引用了一个符号\u errno\u

我正在为ndk编译应用程序,收到错误“未定义对“\uu errno\u位置”的引用”

错误来自一条线

sprintf( buff, "%s TIOCMGET failed: %s\n", buff, strerror(errno) );
如果我评论这一行,链接器不会抱怨同样的内容,否则它会抱怨


我正在尝试使用Sourcery G++Lite的arm none linux gnueabi gcc工具链为android构建我自己的可执行文件。

据我所知,您的编译器引用了一个符号
\u errno\u location
,在链接器正在查看的任何库中都找不到该符号

这表明:

  • 您没有正确的库;或
  • 您确实有正确的库,但它们没有提供给链接器;或
  • 您没有正确的标题
  • 如果标题与库不匹配,则符号可能具有错误的名称,因此可能会出现此类链接错误


    似乎您正在包含编译器的LibC头,然后针对android库进行链接,这可能并不总是有效。

    Hmm。。。以下是我的编译步骤:
    arm-none-linux-gnueabi-gcc-I\Apps\Android\GT-I9100G\u OpenSource\kernel\include-I“\Apps\codesource\Sourcery G++Lite\arm-none-linux-gnueabi\libc\usr\include”-c hello.c-o hello.o arm none linux gnueabi ld--entry=\u start--dynamic linker/system/bin/linker-nostlib-rpath/system/lib-rpath link\apps\android\system\lib-L\apps\android\system\lib-L c-L android\u运行时-L sqlite-o hellodynamic2 hello.o crt0.o
    您在这里发现了任何错误吗?您似乎包括了来自G++LibC,但是针对android LibC的链接-尝试包括来自android平台的LibC头。android平台是指内核源代码还是NDK?我指的是NDK附带的LibC头。太棒了!!!!通过将
    -I\Apps\Android\Android-ndk-r7b\platforms\Android-14\arch arm\usr\include
    添加到gcc include路径来解决。谢谢:-)