3

Linux ホストに Eclipse CDT、CodeSourcery G++ ツールチェーンをインストールしました。Code Sourcery Eclipse IDE を使用しています。Freescale サイトの Linux Target Image Builder を使用して、Linux カーネルを MCF5485 ボードにインストールしました。

Sourcery Eclipse IDE を使用して、Linux ホスト上に「helloworld」プロジェクトを作成しました。実行可能ファイル (gdbserver、catchsgev など) を Sourcery フォルダーからルート ファイルシステムのボードにコピーしました。

ボード上で gdbserver を実行し、Linux マシンから TCP を使用してデバッグします。Sourcery Eclipse IDE では/、ボード ( /root/bin) のルートに gdbserver をインストールしたため、ターゲットに sysroot を指定しました。

Eclipse のデバッグ構成で IP アドレスを指定しましたが、残りはデフォルトです。[デバッグ構成] の [共有ライブラリ] タブで [sysroot パス名を変換する] オプションを選択しました。

ボード上で gdbsrver を起動し ( gdbserver IP:port /pathname/to/executable)、Linux ホスト上でデバッグ構成を起動します。main()ブレークポイントのため停止します。再開を押すと、次のエラーが表示されます。

warning: .dynamic section for "C:\\Program Files\\CodeSourcery\\Sourcery G++\\m68k-linux-gnu\\libc/lib/libc.so.6" is not at the expected address (wrong library or version mismatch?)
Stopped due to shared library event
Stopped due to shared library event
Stopped due to shared library event

私のプログラムは次のとおりです。

include <stdio.h>

int main(void)
{
    int i=0;
    printf("Hello = %d",i);
    return 0;
}

いくつかのフォーラムで、sysroot を設定する必要があることを読みましたが、ボードのルート ファイルシステムに sysroot をインストールしていれば、何もする必要がないことも読みました。

4

1 に答える 1

1

Code Sourcery ツールをターゲットに配置する必要があるかどうかはわかりませんが、GDB クライアントまたは Eclipse がターゲット ライブラリを見つけられないか、ターゲット ライブラリが Code Sourcery ツールが使用しているライブラリと一致しないようです。

これらのライブラリは、ターゲットの Linux ビルドの一部としてビルドされることを期待しています。ターゲット プロセッサ用にクロス コンパイルする必要があり、/lib ディレクトリの下のターゲット ファイル システムに配置されます。Code Sourcery はターゲット用にビルド済みのライブラリを提供する場合があり、これらはターゲットが使用するライブラリでなければなりません。ターゲットのファイル システムの一部である必要があります。

于 2009-08-01T02:54:56.943 に答える