gentoo 给安装交叉编译环境,进行了简化,
首先安装crossdev
emerge crossdev
这个东西安装好后并不能真正编译exe 程序 ,它只是一个帮你安装交叉编译环境的工具
你可以运行这个命令试试
crossdev
- Usage: crossdev [options] --target TARGET
- Options:
- --b, --binutils ver Specify version of binutils to use
- --g, --gcc ver Specify version of gcc to use
- --k, --kernel ver Specify version of kernel headers to use
- --l, --libc ver Specify version of libc to use
- -S, --stable Use latest stable versions as default
- -C, --clean target Uninstall specified target
- -P, --portage opts Options to pass to emerge (see emerge(1))
- --with[out]-headers Build C library headers before C compiler?
- Stage Options:
- -s0, --stage0 Build just binutils
- -s1, --stage1 Also build a C compiler (no libc/C++)
- -s2, --stage2 Also build kernel headers
- -s3, --stage3 Also build the C library (no C++)
- -s4, --stage4 Also build a C++ compiler [default]
- Extra Fun (must be run after above stages):
- --ex-only Skip the stage steps above
- --ex-gcc Build extra gcc targets (gcj/ada/etc...)
- --ex-gdb Build a cross gdb
- --ex-insight Build a cross insight
- Target (-t) takes a tuple ARCH-VENDOR-OS-LIBC; see 'crossdev -t help'
然后再运行 crossdev -t help
会显示出所有支持的平台
- Supported Architectures:
- - alpha - arm / armeb
- - hppa (parisc) - ia64
- - i386 / i486 / i586 / i686 (x86) - m68k
- - mips / mipsel / mips64 / mips64el
- - powerpc (ppc) / powerpc64 (ppc64)
- - sparc / sparc64 - s390 / s390x
- - sh / sh[1-5] / sh64 - x86_64 (amd64)
- Supported C Libraries:
- - glibc (gnu)
- - klibc [prob wont work]
- - newlib [bare metal/no operating system]
- - uclibc [not all arches are ported]
- Special Targets:
- - avr http://www.nongnu.org/avr-libc/
- - bfin http://blackfin.uclinux.org/
- - h8300 http://h8300-hms.sourceforge.net/
- - mingw32 http://www.mingw.org/
- - msp430 http://mspgcc.sourceforge.net/
- - nios2 http://www.altera.com/products/ip/processors/nios2/ni2-index.html
- - xc16x http://www.infineon.com/
- - ee / iop / dvp (ps2) [Playstation 2 targets]
- - ppu / spu (cell) [Cell/Playstation 3 targets]
- Softfloat toolchains:
- Include 'softfloat' in the 'vendor' field
- e.g. armeb-softfloat-linux-uclibc powerpc-booya_softfloat-linux-gnu
运行 这个命令才真正安装目标平台的交叉编译环境 ,我安装的是i686 ,mingw32(好像是表示win32 ,不太明白,但是安装这个可以编译生成exe)
crossdev i686-mingw32
这个过程中会下载并安装binutil ,gcc 等软件
- * Host Portage ARCH: x86
- * Target Portage ARCH: x86
- * Target System: i686-mingw32
- * Stage: 4 (C/C++ compiler)
- * binutils: binutils-[latest]
- * gcc: gcc-[latest]
- * headers: w32api-[latest]
- * libc: mingw-runtime-[latest]
- * PORTDIR_OVERLAY: /resource/pkg/gentoo/layman/gentoo-china
- * PORT_LOGDIR: /var/log/portage
- * PKGDIR: /resource/pkg/gentoo/binPackages/cross/i686-mingw32
- * PORTAGE_TMPDIR: /var/tmp/cross/i686-mingw32
完成之后,你会发现会有许多以i686-mingw32开头的命令如
- i686-mingw32-addr2line i686-mingw32-g++ i686-mingw32-ranlib
- i686-mingw32-ar i686-mingw32-gcc i686-mingw32-readelf
- i686-mingw32-as i686-mingw32-gcov i686-mingw32-size
- i686-mingw32-c++ i686-mingw32-gprof i686-mingw32-strings
- i686-mingw32-c++filt i686-mingw32-ld i686-mingw32-strip
- i686-mingw32-cpp i686-mingw32-nm i686-mingw32-windmc
- i686-mingw32-dlltool i686-mingw32-objcopy i686-mingw32-windres
- i686-mingw32-dllwrap i686-mingw32-objdump
进行测试一下
hello.c
- #include<stdio.h>
- int main(){
- printf("hello!");
- }
编译 i686-mingw32-gcc hello.c -o hello.exe
在目录 下会生成一个hello.exe
拿到windows 下的命令行下测试一下,发现可以运行