Ubuntu14.04配置gcc4.4.4+Qt4.8.4交叉编译环境

Ubuntu14.04配置gcc4.4.4+Qt4.8.4交叉编译环境, Ubuntu16.04也类似,

安装32位程序运行支持

sudo apt-get install lib32stdc++6 lib32z1 lib32ncurses5 lib32bz2-1.0
  • 可能报错:

    lib32stdc++6 : 依赖: lib32gcc1 (>= 1:4.1.1) 但是它将不会被安装 E: 无法修正错误
    
    • 解决方案:
      sudo aptitude -f install lib32stdc++6
      
      • 若没有aptitude需先安装该软件

      • 在提示中第一处选n, 第二处选y, 如下:

        edu@edu:/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin$ sudo aptitude -f install lib32stdc++6
        下列“新”软件包将被安装。         
          lib32gcc1{ab} lib32stdc++6 
        0 个软件包被升级,新安装 2 个, 0 个将被删除, 同时 385 个将不升级。
        需要获取 310 kB 的存档。 解包后将要使用 1,338 kB。
        下列软件包存在未满足的依赖关系:
         lib32gcc1 : 依赖: gcc-4.9-base (= 4.9-20140406-0ubuntu1) 但是 4.9.3-0ubuntu4 已安装。
        下列动作将解决这些依赖关系:
        
             保持 下列软件包于其当前版本:
        1)     lib32gcc1 [未安装的]       
        2)     lib32stdc++6 [未安装的]    
        
        
        
        是否接受该解决方案?[Y/n/q/?] n
        
        下列动作将解决这些依赖关系:
        
             降级 下列软件包:                                                      
        1)     gcc-4.9-base [4.9.3-0ubuntu4 (now) -> 4.9-20140406-0ubuntu1 (trusty)]
        2)     libgcc1 [1:4.9.3-0ubuntu4 (now) -> 1:4.9-20140406-0ubuntu1 (trusty)] 
        
        是否接受该解决方案?[Y/n/q/?] y
        下列软件包将被“降级”:
          gcc-4.9-base libgcc1 
        下列“新”软件包将被安装。
          lib32gcc1{a} lib32stdc++6 
        0 个软件包被升级,新安装 2 个, 2 个被降级, 0 个将被删除, 同时 385 个将不升级。
        需要获取 363 kB 的存档。 解包后将要使用 1,328 kB。
        您要继续吗?[Y/n/?] y
        

安装arm编译gcc

  • 安装
cd /opt/
sudo tar -zxvf gcc-4.4.4-glibc-2.11.1-multilib-1.0.tar.gz
  • 测试是否安装成功
    • 在目录/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin#下,测试是否安装成功,成功后效果如图。执行命令: ./arm-none-linux-gnueabi-gcc -v
      edu@edu:/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin$ ./arm-none-linux-gnueabi-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) 
      
  • 到这里交叉编译gcc已配置完, 后面根据需要进行环境变量的设置, 一般采用如下语句:
    export PATH=/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin:$PATH
    

编译安装qt4.8.4

  • 设置交叉编译环境变量

    export PATH=/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin:$PATH
    
  • 检查交叉编译环境是否设置成功

    arm-none-linux-gnueabi-g++ -v
    
  • 生成makefile

    ./configure -prefix /usr/local/Qt-4.8.4 -embedded arm -xplatform /qws/linux-arm-g++ -depths 16,24,32 -little-endian -no-mmx -no-3dnow -no-sse   -no-sse2 -no-glib -no-cups -no-largefile -no-accessibility -no-openssl  -no-gtkstyle -qt-freetype -qt-mouse-pc -qt-mouse-linuxtp -qt-mouse-linuxinput  -plugin-mouse-pc -fast -qt-gfx-transformed -opensource -confirm-license
    
  • make

    • make过程较长, 这里启用的6核编译, 大约用了半个小时编译完成.
      make -j6
      
    • 可能错误
      • 提示类似如下信息

        make[1]: arm-linux-g++:命令未找到
        make[1]: *** [.obj/release-shared-emb-arm/compress.o] 错误 2
        
        • 将./configure参数-xplatform /qws/linux-arm-g++修改为-xplatform /qws/linux-arm-gnueabi-g++即可
          • 注意这里-xplatform /qws/linux-arm-gnueabi-g++表示加载的是mkspecs/linux-arm-gnueabi-g++/目录下的配置文件, 根据你的硬件提供商不同, 这个文件夹下的配置你可能需要供应商提供支持修改, 这我的板子是NXP提供的, 因此我将该目录下的配置文件修改为NXP的相关配置.
      • 提升如下信息

        libz.so.1: cannot open shared object file: No such file or directory
        

        安装lib32z1或lib32stdc++6后尝试

        sudo apt-get install lib32z1
        
      • 提示如下信息

        qtconcurrentiteratekernel.cpp:(.text+0x38): undefined reference  to `clock_gettime'
        
        • 方法一(推荐): 修改src\corelib目录下MakeFile, 在LIBS那行加上 -lrt选项即可, 如下
        LIBS          = $(SUBLIBS)  -L/home/edu/workplace/qt-everywhere-opensource-src-4.8.4/lib -lpthread -lm -ldl -lrt
        
        • 方法二(不推荐): 在./configure 时, 末尾加上 -lrt
  • make install

    sudo make install
    
  • 根据环境需要设置环境变量

    export ARMQTDIR=/usr/local/Qt-4.8.4
    export PATH=$ARMQTDIR/bin:$PATH
    export MANPATH=$ARMQTDIR/man:$MANPATH
    export LD_LIBRARY_PATH=$ARMQTDIR/lib:$LD_LIBRARY_PATH
    
  • 检查Qt安装

    qmake -v
    

    提示如下信息, 表示安装成功

    QMake version 2.01a
    Using Qt version 4.8.4 in /usr/local/Qt-4.8.4/lib
    
posted @ 2019-04-24 00:21  技术不支持  阅读(687)  评论(0编辑  收藏  举报