Instalación de entorno de compilación cruzada

¿Qué es la compilación cruzada?

Los programas que compilamos en Linux utilizando los compiladores integrados gcc y g++ son para la arquitectura X86. La mayoría de nuestras placas de desarrollo son placas de desarrollo de ARM u otras arquitecturas, y necesitamos compilar programas para otras arquitecturas.

Entonces, ¿qué es exactamente la compilación cruzada?

De hecho, se trata de compilar el código de otras plataformas en nuestro PC (X86), lo que se denomina compilación cruzada.

Si desea compilar programas ejecutables en otras plataformas, necesita usar compiladores diferentes, porque los compiladores diferentes tienen conjuntos de instrucciones diferentes.

acerca de

Hay muchos compiladores cruzados, esta vez usamos una herramienta de compilación cruzada proporcionada por la compañía Linaro.

Dirección: http://releases.linaro.org/

Enlace directo:
http://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabi/

inserte la descripción de la imagen aquí

1. Después de la descarga, descomprímelo:

tar -xvf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi.tar.xz

2. Copie todo el directorio descomprimido en el lugar donde desea almacenarlo

Lo puse en mi lugar de administración unificada

mv gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi ~/soft/linux_tools/
zh@zh-lpc:~/soft/linux_tools$ pwd
/home/zh/soft/linux_tools
zh@zh-lpc:~/soft/linux_tools$ ls
gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi
zh@zh-lpc:~/soft/linux_tools$

3. Prueba si se puede ejecutar

Después de ingresar al directorio bin, ejecute ./arm-linux-gnueabi-gcc -v para ver la información de la versión. Si tiene éxito, está bien.

zh@zh-lpc:~/soft/linux_tools$
zh@zh-lpc:~/soft/linux_tools$ cd gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/
zh@zh-lpc:~/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi$ cd bin/
zh@zh-lpc:~/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin$
zh@zh-lpc:~/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin$
zh@zh-lpc:~/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin$ pwd
/home/zh/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin
zh@zh-lpc:~/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin$ ls
arm-linux-gnueabi-addr2line  arm-linux-gnueabi-cpp        arm-linux-gnueabi-gcc-ar      arm-linux-gnueabi-gfortran  arm-linux-gnueabi-objcopy  arm-linux-gnueabi-strings
arm-linux-gnueabi-ar         arm-linux-gnueabi-elfedit    arm-linux-gnueabi-gcc-nm      arm-linux-gnueabi-gprof     arm-linux-gnueabi-objdump  arm-linux-gnueabi-strip
arm-linux-gnueabi-as         arm-linux-gnueabi-g++        arm-linux-gnueabi-gcc-ranlib  arm-linux-gnueabi-ld        arm-linux-gnueabi-ranlib   gdbserver
arm-linux-gnueabi-c++        arm-linux-gnueabi-gcc        arm-linux-gnueabi-gcov        arm-linux-gnueabi-ld.bfd    arm-linux-gnueabi-readelf  runtest
arm-linux-gnueabi-c++filt    arm-linux-gnueabi-gcc-4.9.4  arm-linux-gnueabi-gdb         arm-linux-gnueabi-nm        arm-linux-gnueabi-size
zh@zh-lpc:~/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin$
zh@zh-lpc:~/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin$ ./arm-linux-gnueabi-gcc -v
使用内建 specs。
COLLECT_GCC=./arm-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/home/zh/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/../libexec/gcc/arm-linux-gnueabi/4.9.4/lto-wrapper
目标:arm-linux-gnueabi
配置为:/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/snapshots/gcc-linaro-4.9-2017.01/configure SHELL=/bin/bash --with-mpc=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu --with-mpfr=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gmp=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gnu-as --with-gnu-ld --disable-libmudflap --enable-lto --enable-objc-gc --enable-shared --without-included-gettext --enable-nls --disable-sjlj-exceptions --enable-gnu-unique-object --enable-linker-build-id --disable-libstdcxx-pch --enable-c99 --enable-clocale=gnu --enable-libstdcxx-debug --enable-long-long --with-cloog=no --with-ppl=no --with-isl=no --disable-multilib --with-float=soft --with-mode=thumb --with-tune=cortex-a9 --with-arch=armv7-a --with-fpu=vfpv3-d16 --enable-threads=posix --enable-multiarch --enable-libstdcxx-time=yes --with-build-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/sysroots/arm-linux-gnueabi --with-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu/arm-linux-gnueabi/libc --enable-checking=release --disable-bootstrap --enable-languages=c,c++,fortran,lto --build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu --target=arm-linux-gnueabi --prefix=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu
线程模型:posix
gcc 版本 4.9.4 (Linaro GCC 4.9-2017.01)
zh@zh-lpc:~/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin$

4. Configurar variables de entorno

Si desea poder ejecutarlo en cualquier lugar directamente como el comando gcc que viene con el sistema, debe configurar las variables de entorno.

4-1, recuerda el siguiente directorio

/home/zh/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin

zh@zh-lpc:~/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin$ pwd
/home/zh/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin
zh@zh-lpc:~/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin$

4-2 Abra el archivo de configuración

Podemos elegir configurar todos los usuarios en el sistema, luego abrir: /etc/profile

Si desea configurar un usuario específico, puede abrir el directorio de usuarios:

vim ~/.profile
vim ~/.bashrc

Espera, todo es posible.

Abierto:

zh@zh-lpc:~$ vim ~/.bashrc
zh@zh-lpc:~$

participar:


export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
export PATH=$PATH:/home/zh/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin

Hazlo funcionar:

zh@zh-lpc:~$ source ~/.bashrc
zh@zh-lpc:~$

prueba:

zh@zh-lpc:~$
zh@zh-lpc:~$ arm-linux-gnueabi
arm-linux-gnueabi-addr2line     arm-linux-gnueabi-gcc-ar        arm-linux-gnueabihf-c++         arm-linux-gnueabihf-gcc-ranlib  arm-linux-gnueabihf-objcopy     arm-linux-gnueabi-objcopy
arm-linux-gnueabi-ar            arm-linux-gnueabi-gcc-nm        arm-linux-gnueabihf-c++filt     arm-linux-gnueabihf-gcov        arm-linux-gnueabihf-objdump     arm-linux-gnueabi-objdump
arm-linux-gnueabi-as            arm-linux-gnueabi-gcc-ranlib    arm-linux-gnueabihf-cpp         arm-linux-gnueabihf-gcov-tool   arm-linux-gnueabihf-ranlib      arm-linux-gnueabi-ranlib
arm-linux-gnueabi-c++           arm-linux-gnueabi-gcov          arm-linux-gnueabihf-dwp         arm-linux-gnueabihf-gdb         arm-linux-gnueabihf-readelf     arm-linux-gnueabi-readelf
arm-linux-gnueabi-c++filt       arm-linux-gnueabi-gdb           arm-linux-gnueabihf-elfedit     arm-linux-gnueabihf-gfortran    arm-linux-gnueabihf-size        arm-linux-gnueabi-size
arm-linux-gnueabi-cpp           arm-linux-gnueabi-gfortran      arm-linux-gnueabihf-g++         arm-linux-gnueabihf-gprof       arm-linux-gnueabihf-strings     arm-linux-gnueabi-strings
arm-linux-gnueabi-elfedit       arm-linux-gnueabi-gprof         arm-linux-gnueabihf-gcc         arm-linux-gnueabihf-ld          arm-linux-gnueabihf-strip       arm-linux-gnueabi-strip
arm-linux-gnueabi-g++           arm-linux-gnueabihf-addr2line   arm-linux-gnueabihf-gcc-6.2.1   arm-linux-gnueabihf-ld.bfd      arm-linux-gnueabi-ld
arm-linux-gnueabi-gcc           arm-linux-gnueabihf-ar          arm-linux-gnueabihf-gcc-ar      arm-linux-gnueabihf-ld.gold     arm-linux-gnueabi-ld.bfd
arm-linux-gnueabi-gcc-4.9.4     arm-linux-gnueabihf-as          arm-linux-gnueabihf-gcc-nm      arm-linux-gnueabihf-nm          arm-linux-gnueabi-nm
zh@zh-lpc:~$ arm-linux-gnueabi-gcc -v
使用内建 specs。
COLLECT_GCC=arm-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/home/zh/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/../libexec/gcc/arm-linux-gnueabi/4.9.4/lto-wrapper
目标:arm-linux-gnueabi
配置为:/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/snapshots/gcc-linaro-4.9-2017.01/configure SHELL=/bin/bash --with-mpc=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu --with-mpfr=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gmp=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gnu-as --with-gnu-ld --disable-libmudflap --enable-lto --enable-objc-gc --enable-shared --without-included-gettext --enable-nls --disable-sjlj-exceptions --enable-gnu-unique-object --enable-linker-build-id --disable-libstdcxx-pch --enable-c99 --enable-clocale=gnu --enable-libstdcxx-debug --enable-long-long --with-cloog=no --with-ppl=no --with-isl=no --disable-multilib --with-float=soft --with-mode=thumb --with-tune=cortex-a9 --with-arch=armv7-a --with-fpu=vfpv3-d16 --enable-threads=posix --enable-multiarch --enable-libstdcxx-time=yes --with-build-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/sysroots/arm-linux-gnueabi --with-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu/arm-linux-gnueabi/libc --enable-checking=release --disable-bootstrap --enable-languages=c,c++,fortran,lto --build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu --target=arm-linux-gnueabi --prefix=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu
线程模型:posix
gcc 版本 4.9.4 (Linaro GCC 4.9-2017.01)
zh@zh-lpc:~$

Luego configure también otras versiones.

Supongo que te gusta

Origin blog.csdn.net/qq_17623363/article/details/120465018
Recomendado
Clasificación