
If you find cross-compilation more fun than it probably is, you might want to follow me on Twitter. The resulting GCC toolchain has prefixes x86_64-w64-mingw32- and i686-w64-mingw32.
#Gcc for mac install#
mingw-w64įor Windows, there is now a Mingw-w64 Formula directly in homebrew-core, so you can install it simply with brew install mingw-w64. cargo/config: Ī more complete guide to Rust cross-compilation is here. To use this toolchain as the target linker for Rust cross-compilation, add lines like these to your. To cross-compile cgo projects you can set the CC and CXX environment flags when building to x86_64-linux-musl-gcc and x86_64-linux-musl-g++ (or corresponding), on top of the usual GOOS and GOARCH. Otherwise you may get unresolved symbol errors related to libiconv when compiling GCC 4.3 or higher on OS X 10.4 and 10.5. macOS users can download the latest libiconv release by visiting the libiconv website or directly accessing the GNU main FTP mirror. You can also use -with-i486 (x86 32-bit), -with-aarch64 (ARM 64-bit), -with-arm (ARM soft-float) and -with-mips. macOS users need a replacement libiconv because the system libiconv is seriously out of date. For example to get a Raspberry Pi cross-compiler use: brew install FiloSottile/musl-cross/musl-cross -without-x86_64 -with-arm-hf It comes with a precompiled Homebrew Bottle for High Sierra, so if you want to build everything from source use brew install -build-from-source. brew install FiloSottile/musl-cross/musl-cross
#Gcc for mac full#
It takes a long time to build, but it generates a full cross-compiler toolchain, and links into /usr/local/bin just the prefixed binaries, like x86_64-linux-musl-gcc. So, I wrapped up musl-cross-make in a Homebrew Formula, FiloSottile/homebrew-musl-cross. Also, it manages resources and offers powerful dev tools.
#Gcc for mac software#
It lets you build software in a well defined sandbox, and only the binaries are linked into your PATH, GNU Stow style. musl is specifically engineered to support fully static binaries, which is not recommended with glibc. However, if you build them as static binaries by passing -static as a LDFLAG they will run anywhere, including in scratch Docker containers. This means that the binaries will only run on a musl-based system, like Alpine. Maybe most importantly, it's based on the musl C standard library. Also, it can target Linux running on a number of different architectures.

Musl-cross-make builds beautifully self-contained cross-compilers, so you don't have to worry about pointing to the right libraries path or about where you keep the toolchain. It took a few patches, but it runs well on macOS.

Thankfully, Rich Felker built a Makefile set to build musl-based cross-compilers, musl-cross-make. While in Go you just need to set an environment variable, for C you need a whole separate toolchain, that might require an intermediate toolchain to build, and you need to know what you are targeting very well. For XCode 6.x through 8.x (and probably 5. For GCC newer then 4.9, you might find a plug in in the repository xcode-gcc. Tl dr: you can install cross-compiler toolchains to compile C/C++ for Windows or Linux from macOS with these two Homebrew Formulas. For GCC 4.8 or GCC 4.9 installed as explained above, download this GCC 4.8 XCode plug in or this GCC 4.9 XCode plug in. Easy Windows and Linux cross-compilers for macOS
