7

Ubuntu 10.04 ホストの Linaro ツールチェーンで次のコマンドを使用して、ARM 用の Valgrind (http://valgrind.org/downloads/valgrind-3.8.1.tar.bz2) をクロスコンパイルしました ( Buildroot を使用しています)。

export PATH=$PATH:/home/user/toolchain/linaro/bin
CC=arm-linux-gnueabi-gcc CFLAGS=-I/home/user/toolchain/linaro/arm-linux-gnueabi/libc/usr/include LDFLAGS=-L/home/user/toolchain/linaro/arm-linux-gnueabi/libc/usr/lib ./configure --prefix=/opt/valgrind --host=armv7-none-linux-gnueabi --target=arm-none-linux-gnueabi --build=i386-ubuntu-linux
make
sudo make install

バイナリを ARM ターゲット ボードにコピーすると、次のエラーが発生します。

==413== Memcheck, a memory error detector
==413== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
==413== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==413== Command: /home/user/testApp
==413== 

valgrind:  Fatal error at startup: a function redirection
valgrind:  which is mandatory for this platform-tool combination
valgrind:  cannot be set up.  Details of the redirection are:
valgrind:  
valgrind:  A must-be-redirected function
valgrind:  whose name matches the pattern:      memcpy
valgrind:  in an object with soname matching:   ld-linux.so.3
valgrind:  was not found whilst processing
valgrind:  symbols from the object with soname: ld-linux.so.3
valgrind:  
valgrind:  Possible fixes: (1, short term): install glibc's debuginfo
valgrind:  package on this machine.  (2, longer term): ask the packagers
valgrind:  for your Linux distribution to please in future ship a non-
valgrind:  stripped ld.so (or whatever the dynamic linker .so is called)
valgrind:  that exports the above-named function using the standard
valgrind:  calling conventions for this platform.  The package you need
valgrind:  to install for fix (1) is called
valgrind:  
valgrind:    On Debian, Ubuntu:                 libc6-dbg
valgrind:    On SuSE, openSuSE, Fedora, RHEL:   glibc-debuginfo
valgrind:  
valgrind:  Cannot continue -- exiting now.  Sorry.

私の Linaro ツールチェーンのバージョンは次のとおりです。

gcc version 4.7.1 20120402 (prerelease) (crosstool-NG linaro-1.13.1-2012.04-20120426 - Linaro GCC 2012.04) 

Googleで検索しましたが、これに対する解決策が見つかりません。Valgrind をターゲット ボードで動作させるにはどうすればよいですか? Buildroot を使用してシステムをビルドしていますが、libc6-dbg はビルド システムで見つけることができるパッケージではありません。ツールチェーンの sysroot からコピーする必要のあるディレクトリまたはファイルはありますか? ありがとう -

Valgrind を実行するために使用しているコマンドを次に示します。

# which valgrind
/usr/bin/valgrind
# valgrind /home/user/MyQtApp
==216== Memcheck, a memory error detector
...
...
4

4 に答える 4

5

Buildroot または OpenEmbedded を使用して Libc をビルドしていますか?

OE の場合は、libc6-dbg パッケージをローカル リポジトリ (TMPDIR/deploy/ipk) で使用できるようにする必要があります。または、「dbg-pkgs」を IMAGE_FEATURES に追加して、イメージを再構築します。

Glibc 2.12 は、古いバージョンの OpenEmbedded を使用していることを示しています。しかし、これでも libc6-dbg パッケージが提供されるはずです。

Buildroot を使用したことがないため、役に立ちません。

于 2012-12-03T10:52:49.543 に答える
1

ターゲットでストリップされていないライブラリが必要です。

やり方は2つ。

buildroot 設定で:

1- ストリップされていないシステムを作成します: BR2_STRIP_none=y 非常に大きなターゲット イメージを作成します。

2- librairie フォルダーのみを削除します。BR2_STRIP_EXCLUDE_DIRS="ライブラリ"

于 2013-02-12T17:51:38.500 に答える
0

申し訳ありませんが、私が自分で使用していないパッケージへのリンクを提供していますが、うまくいくことを願っています:

https://launchpad.net/ubuntu-leb/oneiric/armel/libc6-dbg

于 2012-11-16T15:10:14.773 に答える