对__errno_location的未定义引用

BTR*_*idu 5 android-ndk

我正在编译ndk的应用程序,我收到错误"未定义引用`__errno_location'".

错误来自一条线

sprintf( buff, "%s TIOCMGET failed: %s\n", buff, strerror(errno) );
Run Code Online (Sandbox Code Playgroud)

如果我评论这一行,链接器不会抱怨它,否则它会.

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

Nic*_*ick 6

根据我的收集,您的编译器引用了一个符号__errno_location,该符号在链接器正在查看的任何库中都找不到.

这表明:

  1. 你没有正确的图书馆; 要么
  2. 您确实拥有正确的库但它们并未提供给链接器; 要么
  3. 您没有正确的标头.

如果标头与库不匹配,则符号可能具有错误的名称,因此您可以获得此类链接错误.

看起来你要包含编译器的LibC头文件,然后链接到android库,这可能并不总是有效.

  • 伟大的!!!!通过将 `-I \Apps\Android\android-ndk-r7b\platforms\android-14\arch-arm\usr\include` 添加到 gcc 包含路径来解决。谢谢 :-) (2认同)