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 に答える