为hisiv200交叉编译valgrind3.7

环境:ubuntu11.10

编译器:hisiv200的gcc版本4.4.1

代码:valgrind版本3.7

//============================================================

hisiv200 的工具目录在 /home/tomren/hisi-linux

注意设置工具链的时候使用绝对路径!不要使用相对路径,我开始使用~/hisi-linux/...会提示找不到编译器。

(我当时没注意它找不到编译器的提示,因为我反复执行单条命令是可以编译成功文件的)

命令如下:

CC='/home/tomren/hisi-linux/x86-arm/arm-hisiv200-linux/bin/arm-hisiv200-linux-gnueabi-gcc'  LD='/home/tomren/hisi-linux/x86-arm/arm-hisiv200-linux/bin/arm-hisiv200-linux-gnueabi-ld'  CXX='/home/tomren/hisi-linux/x86-arm/arm-hisiv200-linux/bin/arm-hisiv200-linux-gnueabi-c++'  AR='/home/tomren/hisi-linux/x86-arm/arm-hisiv200-linux/bin/arm-hisiv200-linux-gnueabi-ar' CFLAGS="-I/home/tomren/hisi-linux/x86-arm/arm-hisiv200-linux/arm-hisiv200-linux-gnueabi/target/usr/include/" LDFLAGS="-L/home/tomren/hisi-linux/x86-arm/arm-hisiv200-linux/arm-hisiv200-linux-gnueabi/target/usr/lib" ./configure --host=armv7-a-linux --build=i686-pc-linux-gnu --prefix=/home/tomren/valgrind

下面这个只是为了看着工整点:

1 CC='/home/tomren/hisi-linux/x86-arm/arm-hisiv200-linux/bin/arm-hisiv200-linux-gnueabi-gcc' 
2 LD='/home/tomren/hisi-linux/x86-arm/arm-hisiv200-linux/bin/arm-hisiv200-linux-gnueabi-ld'
3 CXX='/home/tomren/hisi-linux/x86-arm/arm-hisiv200-linux/bin/arm-hisiv200-linux-gnueabi-c++'
4 AR='/home/tomren/hisi-linux/x86-arm/arm-hisiv200-linux/bin/arm-hisiv200-linux-gnueabi-ar'
5 CFLAGS="-I/home/tomren/hisi-linux/x86-arm/arm-hisiv200-linux/arm-hisiv200-linux-gnueabi/target/usr/include/"
6 LDFLAGS="-L/home/tomren/hisi-linux/x86-arm/arm-hisiv200-linux/arm-hisiv200-linux-gnueabi/target/usr/lib"
7 ./configure --host=armv7-a-linux --build=i686-pc-linux-gnu --prefix=/home/tomren/valgrind

--host 是编译后运行的平台

--build 是编译器运行的平台

--prefix 是执行 make install 后安装的目录

如果使用的 CFLAGS 和 LDFLAGS 如果有多个路径,使用冒号“:”分割。

//============================================================

感觉编译成功也是运气吧,一点点试出来的。

如果把时间都算下来,我差不多试了2天多些,希望能帮助要在相同芯片上使用valgrind的朋友。

//============================================================

在这个正确编译版本之前,我还试了下面这个命令,因为我们的CodeBlocks下的CFLAGS设置了这些参数,

但我在这里也同样设置时编译过程中报错了,我并不知道原因,去掉后就正常编译过了。

CC='/home/tomren/hisi-linux/x86-arm/arm-hisiv200-linux/bin/arm-hisiv200-linux-gnueabi-gcc'  LD='/home/tomren/hisi-linux/x86-arm/arm-hisiv200-linux/bin/arm-hisiv200-linux-gnueabi-ld'  CXX='/home/tomren/hisi-linux/x86-arm/arm-hisiv200-linux/bin/arm-hisiv200-linux-gnueabi-c++'  AR='/home/tomren/hisi-linux/x86-arm/arm-hisiv200-linux/bin/arm-hisiv200-linux-gnueabi-ar' CFLAGS="-fpic -shared -fvisibility=hidden -marm -mcpu=cortex-a9 -mfpu=vfp -mfloat-abi=softfp -march=armv7-a -mtune=cortex-a9 -fsingle-precision-constant -fsigned-char  -I/home/tomren/hisi-linux/x86-arm/arm-hisiv200-linux/arm-hisiv200-linux-gnueabi/target/usr/include/:/home/tomren/hisi-linux/x86-arm/arm-hisiv200-linux/arm-hisiv200-linux-gnueabi/include/c++/4.4.1" LDFLAGS="-L/home/tomren/hisi-linux/x86-arm/arm-hisiv200-linux/arm-hisiv200-linux-gnueabi/target/usr/lib:/home/tomren/hisi-linux/x86-arm/arm-hisiv200-linux/arm-hisiv200-linux-gnueabi/lib" ./configure --host=armv7-a-linux --build=i686-pc-linux-gnu --prefix=/home/tomren/valgrind

//============================================================
此外我还修改了configure文件中的一处地方

我在

gcc_version=`${CC} --version \

| head -n 1 \
| $SED 's/i686-apple-darwin10//' \
| $SED 's/i686-apple-darwin11//' \
| $SED 's/^[^0-9]*\([0-9.]*\).*$/\1/'`

这句话的地方添了下面这句话,对gcc_version又强制赋值了一次。

gcc_version=4.4.1

gcc_version中的4.4.1是通过目标编译器的gcc --version得到的

之所以添上这句话,是因为通过第一条命令的出的gcc_version变量在后面会有问题,后面打印出来是200

(我输出过gcc_version是4.4.1,我并不知道后面使用时为什么是200)

所以默认情况下会出错,得到:

checking dependency style of /home/tomren/hisi-linux/x86-arm/arm-hisiv200-linux/bin/arm-hisiv200-linux-gnueabi-gcc... gcc3
checking for diff -u... yes
checking for a supported version of gcc... no (200)
configure: error: please use gcc >= 3.0 or clang >= 2.9

//============================================================

End :)

posted @ 2011-12-19 19:49  tomren  阅读(1821)  评论(1编辑  收藏  举报