3

我已经在 Linux 主机上安装了 Eclipse CDT、CodeSourcery G++ 工具链。我正在使用 Code Sourcery Eclipse IDE。我已经使用飞思卡尔网站上的 Linux Target Image Builder 将 Linux 内核安装到了 MCF5485 板上。

我使用 Sourcery Eclipse IDE 在我的 Linux 主机上创建了一个“helloworld”项目。我已将 Sourcery 文件夹中的可执行文件(如 gdbserver、catchsgev 等)复制到根文件系统中的板上。

我在板上运行 gdbserver,然后使用我的 Linux 机器上的 TCP 进行调试。在 Sourcery Eclipse IDE 中,我在目标上指定了 sysroot,/因为我已经在板上的根目录中安装了 gdbserver ( /root/bin)。

我已经在 Eclipse 的调试配置中指定了 IP 地址,而 rest 是默认的。我在调试配置的共享库选项卡中选择了选项“翻译 sysroot 路径名”

我在板载 ( gdbserver IP:port /pathname/to/executable) 上启动 gdbsrver,然后在 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 回答