9

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

错误来自一行

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

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

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

4

1 回答 1

8

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

这表明:

  1. 您没有正确的库;或者
  2. 您确实有正确的库,但没有将它们提供给链接器;或者
  3. 您没有正确的标题。

如果标头与库不匹配,则符号可能具有错误的名称,因此您可能会遇到此类链接错误。

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

于 2012-05-02T13:15:15.807 回答