arm-linux-gcc环境安装与编译测试(版本4.4.4)

第一部分:CentOS-6.8_x64(或x32)下安装c++/c的交叉编译环境

1. 交叉编译环境的安装包:gcc-4.4.4-glibc-2.11.1-multilib-1.0_EasyARM-iMX283.tar,版本号:4.4.4

2. 将安装包直接解压到root根目录下:
    tar xvf gcc-4.4.4-glibc-2.11.1-multilib-1.0_EasyARM-iMX283.tar -C /
    
3. 设置PATH环境
    编辑/etc/profile文件,在该文件的最后加上:export PATH=$PATH:/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin
    让/etc/profile修改立即生效:source /etc/profile
    
4. 测试是否安装成功
    arm-linux-g++ -v [arm-linux-gcc -v]
    报错:
        错误1:-bash: /gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-linux-gcc: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
        解决1:yum install -y glibc.i686
        或
        错误2:error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
        解决2:yum -y install zlib.i686
        或
        错误3:/libexec/gcc/arm-none-linux-gnueabi/4.4.3/cc1: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
        解决3: yum -y install libstdc*
    其实这几个错误只有在x64系统下才会出现(在x64系统下执行x32程序),x32应该是ok的
    
    我们再次测试是否安装成功:arm-linux-g++ -v [arm-linux-gcc -v],输出如下:
    Using built-in specs.
    Target: arm-fsl-linux-gnueabi
    Configured with: /work/arm-toolchains/tmp/src/gcc-4.4.4/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-fsl-linux-gnueabi --prefix=/work/arm_fsl_gcc_4.4.4_multilib --with-sysroot=/work/arm_fsl_gcc_4.4.4_multilib/arm-fsl-linux-gnueabi/multi-libs --enable-languages=c,c++ --with-pkgversion=4.4.4_09.06.2010 --enable-__cxa_atexit --disable-libmudflap --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-gmp=/work/arm-toolchains/tmp/arm-fsl-linux-gnueabi/build/static --with-mpfr=/work/arm-toolchains/tmp/arm-fsl-linux-gnueabi/build/static --with-ppl=/work/arm-toolchains/tmp/arm-fsl-linux-gnueabi/build/static --with-cloog=/work/arm-toolchains/tmp/arm-fsl-linux-gnueabi/build/static --enable-threads=posix --enable-target-optspace --with-local-prefix=/work/arm_fsl_gcc_4.4.4_multilib/arm-fsl-linux-gnueabi/multi-libs --disable-nls --enable-symvers=gnu --enable-c99 --enable-long-long --enable-multilib --with-system-zlib --enable-lto
    Thread model: posix
    gcc version 4.4.4 (4.4.4_09.06.2010)
    
    至此,安装结束
    
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

第二部分:交叉编译c++代码,生成静态链接库,并在32位arm机器(如:pos机)上测试静态链接库调用是否正确
1. 待编译c++代码
    bigInteger.cpp  HMAC_SHA1.cpp  MPosRecord.cpp  MyOTP.cpp  MyRSA.cpp  PosScan.sln  SHA1.h
    bigInteger.h    HMAC_SHA1.h    MPosRecord.h    MyOTP.h    MyRSA.h    SHA1.cpp
    
2. 执行编译,将.cpp文件编译为.o文件
    arm-linux-g++ -c *.cpp
    编译之后结果:
    bigInteger.cpp  bigInteger.o   HMAC_SHA1.h  MPosRecord.cpp  MPosRecord.o  MyOTP.h  MyRSA.cpp  MyRSA.o      SHA1.cpp  SHA1.o
    bigInteger.h    HMAC_SHA1.cpp  HMAC_SHA1.o  MPosRecord.h    MyOTP.cpp     MyOTP.o  MyRSA.h    PosScan.sln  SHA1.h
    
3. 将所有的.o文件编译成.a文件,也就是静态链接库文件
    arm-linux-ar -crv libiwaybook.a *.o
    
4. 让main.cpp去调用我们的静态链接库iwaybook.a,生成arm上的可执行文件
    arm-linux-g++ -static ../main/main.cpp -L. /liwaybook -o iwaybook_static_linked
    我们发现目录下多了一个可执行文件:iwaybook_static_linked
    bigInteger.cpp  HMAC_SHA1.cpp  iwaybook_static_linked  MPosRecord.h  MyOTP.h    MyRSA.h      SHA1.cpp
    bigInteger.h    HMAC_SHA1.h    libiwaybook.a           MPosRecord.o  MyOTP.o    MyRSA.o      SHA1.h
    bigInteger.o    HMAC_SHA1.o    MPosRecord.cpp          MyOTP.cpp     MyRSA.cpp  PosScan.sln  SHA1.o

5. 将可执行文件iwaybook_static_linked上传到pos机,并执行
    上传:scp iwaybook_static_linked root@192.168.1.136:/opt/arm-linux-gcc
    执行:
        [root@A287 arm-linux-gcc]# ./iwaybook_static_linked 
        decrypt e=17
        decrypt n=87735338211064345724159139660828321853371216940134650208768326644176841454143
        decrypt m=23245021127351875659792536546265235000099624620324683327615383856095272908337
        decrypted success, uuid=3d79bc62845240a3bac442700a2af861
        
    至此编译代码并测试成功!


 

转载于:https://my.oschina.net/wangbaofeng/blog/1154526

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值