9

我在带有 linux 的 ARM CortexA8 的实际程序中发现了以下问题:

´*** glibc detected *** ./PRUssExternal: double free or corruption (top): 0x00024fe8 ***´

我在网上搜索它,我发现管理这个问题的最有用的程序是 Valgrind。

如何使用 gdb 追踪 C++ 中的双重释放或损坏错误

然后我尝试在交叉编译中编译到我的系统,在配置中使用以下选项。我正在使用 Valgrind 3.8.1

@-virtual-machine:~/valgrind-3.8.1$ CC=arm-cortexa8-linux-gnueabi-gcc CFLAGS="-pipe -Os -mtune=cortex-a8 -march=armv7-a -mabi=aapcs-linux -msoft-float -I/opt/OSELAS.Toolchain-2011.11.3/arm-cortexa8-linux-gnueabi/gcc-4.6.2-glibc-2.14.1-binutils-2.21.1a-kernel-2.6.39-sanitez /sysroot-arm-cortexa8-linux-gnueabi/usr/include" LDFLAGS="-L/opt/OSELAS.Toolchain-2011.11.3/arm-cortexa8-linux-gnueabi/gcc-4.6.2-glibc-2.14.1 -binutils-2.21.1a-kernel-2.6.39-sanitez/sysroot-arm-cortexa8-linux-gnueabi/usr/lib" ./configure -prefix=/opt/valgrid -host=arm-cortexa8-linux-gnueabi -目标=arm-none-linux-gnueabi-build=x86_64-ubuntu-linux

这个配置的输出是:

checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for arm-cortexa8-linux-gnueabi-strip... arm-cortexa8-linux-gnueabi-strip
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking whether ln -s works... yes
checking for arm-cortexa8-linux-gnueabi-gcc... arm-cortexa8-linux-gnueabi-gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... yes
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether arm-cortexa8-linux-gnueabi-gcc accepts -g... yes
checking for arm-cortexa8-linux-gnueabi-gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of arm-cortexa8-linux-gnueabi-gcc... gcc3
checking whether arm-cortexa8-linux-gnueabi-gcc and cc understand -c and -o together... yes
checking how to run the C preprocessor... arm-cortexa8-linux-gnueabi-gcc -E
checking for arm-cortexa8-linux-gnueabi-g++... arm-cortexa8-linux-gnueabi-g++
checking whether we are using the GNU C++ compiler... yes
checking whether arm-cortexa8-linux-gnueabi-g++ accepts -g... yes
checking dependency style of arm-cortexa8-linux-gnueabi-g++... gcc3
checking for arm-cortexa8-linux-gnueabi-ranlib... arm-cortexa8-linux-gnueabi-ranlib
checking for a sed that does not truncate output... /bin/sed
checking for ar... /usr/bin/ar
checking for perl... /usr/bin/perl
checking for gdb... /usr/bin/gdb
checking dependency style of arm-cortexa8-linux-gnueabi-gcc... gcc3
checking for diff -u... yes
checking for a supported version of gcc... ok (4.6.2)
checking build system type... x86_64-ubuntu-linux-gnu
checking host system type... arm-cortexa8-linux-gnueabi
checking for a supported CPU... no (arm)
configure: error: Unsupported host architecture. Sorry

在此输出的最后一行,我的问题出现了,尽管我查找了一些信息,并且 Cortexa8 它是受支持的平台之一。

ARM9上的valgrind?

出于这个原因,我的问题是我的板是否不受支持,因为我使用的库不兼容,或者可能是其他原因。或者另一方面,我可以毫无畏惧地编译 valgrind 并跳过这个检查。

谢谢你的时间

-问候

布雷西01010...

4

1 回答 1

14

您应该编辑配置文件。找到一行“armv7*”并将其更改为“arm*”——这就足够了。

于 2013-11-12T08:51:13.163 回答