相关疑难解决方法(0)

使用gdbserver调试共享库

我在目标和CodeSourcery IDE上使用gdbserver.我的硬件是带有omap3530的gumstix.

我可以在主应用程序中单步执行代码,但如果我尝试进入共享库中的函数,则会获得内存地址并且调试器会终止.

这是我的库,它被编译并复制到目标系统上的/ lib文件夹.(它有调试符号)我试图使用.gbdinit文件来设置solib-absolute-prefix/lib

以下是gdb跟踪的警告:

903,056 13-gdb-set sysroot-on-target /lib
903,065 13^done
903,065 (gdb) 
903,065 14-target-select remote 192.168.1.101:2345
903,114 =thread-group-started,id="i1",pid="42000"
903,114 =thread-created,id="1",group-id="i1"
903,115 15-list-thread-groups --available
903,120 16-list-thread-groups
903,128 &"warning: Unable to find dynamic linker breakpoint function.\nGDB will be unable to debug shared library initializers\nand track explicitly loaded dynamic code."
903,128 &"\n"
Run Code Online (Sandbox Code Playgroud)

这导致

903,395 &"Error while mapping shared library sections:\n"
903,397 &"/lib/libCoreLib.so: Invalid argument.\n"
903,399 =library-loaded,id="/lib/libCoreLib.so",target-name="/lib/libCoreLib.so",hostname="/lib/libCoreLib.so",low-address="0x0",high-address="0x0",symbols-loaded="0",thread-group="i1"
Run Code Online (Sandbox Code Playgroud)

linux gdb shared-libraries gdbserver

7
推荐指数
2
解决办法
1万
查看次数

无法在 qemu 或 gem5 中打开 /lib/ld-linux-aarch64.so.1

我正在尝试在我的台式计算机上模拟一个简单的 Hello world ARM 示例。我尝试了 qemu 和 gem5。两者都给出了类似的错误。他们找不到ld-linux-aarch64.so.1。其实我也找不到。如果我能找到它,我将用 -L (在 qemu 中)或 --redirects (在 gem5 中)显示它。

该文件是:

armhello: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=23a21b7a545ac510923b6b3713d2bbee092f820a, for GNU/Linux 3.7.0, not stripped
Run Code Online (Sandbox Code Playgroud)

它是用以下内容编译的:aarch64-linux-gnu-gcc

我正在尝试在 qemu 中运行它:

qemu-aarch64 armhello
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

/lib/ld-linux-aarch64.so.1: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我尝试在 gem5 中运行它:(simpleARM.py 指向我的可执行文件(名为armhello))

build/ARM/gem5.opt configs/tutorial/simpleARM.py
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

panic: panic condition fd < 0 occurred: Failed to open file /lib/ld-linux-aarch64.so.1.
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

注意:我知道它在编译时有效--static。但我需要运行动态链接的更复杂的二进制文件,并且我无法更改它们。这只是一个例子。

qemu arm64 gem5

6
推荐指数
1
解决办法
3万
查看次数

如何使用 se.py 在 gem5 系统调用模拟模式下编译和运行可执行文件?

有许多可能的错误和解决方法分散在不同的地方,任何人都可以提供至少一种详细的工作设置,以及确切的 gem5 和编译器版本,希望在 Ubuntu 上吗?

gem5

4
推荐指数
1
解决办法
3933
查看次数

如何下载 Torvalds Linux Kernel master、(重新)编译它并使用 QEMU 启动它?

几天来,我正在研究一个小项目,以探索内核编程。然而,我在网上看了很多关于内核编译的问题,并在之前问过一个问题,但我在某些时候仍然感到迷茫。

如果我需要进行一些内核编程,我认为使用 Linus Torvalds 的 Linux 源代码将是最好的起点。所以我做了以下操作(来自 MacOS High Sierra)

  • 下载内核源代码:https://github.com/torvalds/linux
  • 解压它
  • 启动终端并运行:
    • vagrant init
    • vagrant up
    • vagrant ssh
  • 连接后,我输入:
    • cd /vagrant/linux 为了进入Linux源解压文件夹
    • make menuconfig 我只是按了确定/保存
    • sudo make -j 4 && sudo make modules_install -j 4 && sudo make install -j 4

现在,我遇到了一个小错误:

agrant @vagrant-ubuntu-trusty-64:/vagrant/Kernel-Programming/linx-kernel$ sudo make -j 4 && sudo make modules_install -j 4 && sudo make install -j 4
  CHK include/config/kernel.release
CHK     include/generated/uapi/linux/version.h
CHK     include/generated/utsrelease.h
CHK     scripts/mod/devicetable-offsets.h
CHK     include/generated/timeconst.h
CHK     include/generated/bounds.h
CHK     include/generated/asm-offsets.h
CALL    scripts/checksyscalls.sh …
Run Code Online (Sandbox Code Playgroud)

linux qemu linux-kernel macos-high-sierra

1
推荐指数
1
解决办法
5152
查看次数