#!/bin/bash #+-------------------------------------------------------------------------------------------- #|Description: This shell script used download and compile valgrind for ARM #| Author: GuoWenxue #| ChangeLog: #| 1, Initialize 1.0.0 on 2018.08.16 #| #| Running bugfix: #| root@JelliesV2:/tmp# tar -xJf valgrind_a5.tar.xz -C /apps/ #| root@JelliesV2:/tmp# export PATH=$PATH:/apps/valgrind/ #| root@JelliesV2:/tmp# valgrind #| valgrind: failed to start tool 'memcheck' for platform 'arm-linux': No such file or directory #| root@JelliesV2:/tmp# export VALGRIND_LIB=/apps/valgrind/ #| root@JelliesV2:/tmp# valgrind --tool=memcheck --leak-check=full --track-fds=yes ./memcheck #| #+-------------------------------------------------------------------------------------------- # valgrind install path be same as board PREFIX_PATH=`pwd`/../install/ LYFTP_SRC=http://master.weike-iot.com:2211/src/ CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- function msg_banner() { echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" } function check_result() { if [ $? != 0 ] ; then echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" exit ; fi } function export_cross() { # export cross toolchain export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld export NM=${CROSS_COMPILE}nm export RANLIB=${CROSS_COMPILE}ranlib export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS export LDFLAGS= export CFLAGS= } function compile_valgrind() { SRC_NAME=valgrind-3.16.1 PACK_SUFIX=tar.bz2 if [ -f ${PREFIX_PATH}/bin/valgrind ] ; then msg_banner "$SRC_NAME already compile and installed" return 0; fi msg_banner "Start cross compile $SRC_NAME " if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then #wget https://sourceware.org/pub/valgrind/valgrind-3.16.1.tar.bz2 wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} check_result "ERROR: download ${SRC_NAME} failure" fi tar -xjf ${SRC_NAME}.${PACK_SUFIX} cd ${SRC_NAME} sed -i -e "s|armv7|arm|g" configure ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-only32bit check_result "ERROR: configure ${SRC_NAME} failure" make && make install check_result "ERROR: compile ${SRC_NAME} failure" cd - } function do_pack() { cp -af ${PREFIX_PATH}/lib/valgrind . -af cp -af ${PREFIX_PATH}/bin/valgrind valgrind rm -f valgrind/64bit* rm -f valgrind/amd64* rm -f valgrind/mips64* rm -f valgrind/i386* rm -f valgrind/mips* rm -f valgrind/power* rm -f valgrind/s390* rm -f valgrind/*.a tar -cJf valgrind_a5.tar.xz valgrind rm -rf valgrind } export_cross compile_valgrind do_pack