对__errno_location的未定义引用

时间:2012-05-02 12:59:42

标签: android-ndk

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

错误来自一行

sprintf( buff, "%s TIOCMGET failed: %s\n", buff, strerror(errno) );

如果我对此行发表评论,那么链接器就不会抱怨它,否则就会抱怨。

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

1 个答案:

答案 0 :(得分:6)

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

这表明:

  1. 您没有正确的库;或
  2. 您确实拥有正确的库,但它们并未提供给链接器;或
  3. 您没有正确的标题。
  4. 如果标题与库不匹配,则符号名称可能错误,因此您可能会收到此类链接错误。

    看起来您正在包含编译器的LibC标头,然后链接到可能并不总是有用的android库。