All Projects → multiarch → Crossbuild

multiarch / Crossbuild

Licence: mit
🌍 multiarch cross compiling environments

Projects that are alternatives of or similar to Crossbuild

Pi Builder
Extensible tool to build Arch Linux ARM for Raspberry Pi on x86_64 host using Docker
Stars: ✭ 31 (-95.09%)
Mutual labels:  build-tool, builder, build-system
Flubucore
A cross platform build and deployment automation system for building projects and executing deployment scripts using C# code.
Stars: ✭ 695 (+9.97%)
Mutual labels:  build-tool, builder, build-system
blight
A framework for instrumenting build tools
Stars: ✭ 57 (-90.98%)
Mutual labels:  build-tool, build-system
automeka
Implicit and module-aware build system for future C++
Stars: ✭ 20 (-96.84%)
Mutual labels:  build-tool, build-system
jagen
A software engineer's workspace manager and build systems wrapper
Stars: ✭ 32 (-94.94%)
Mutual labels:  build-tool, build-system
Cbt
CBT - fun, fast, intuitive, compositional, statically checked builds written in Scala
Stars: ✭ 489 (-22.63%)
Mutual labels:  build-tool, build-system
build
Build system scripts based on GENie (https://github.com/bkaradzic/genie) project generator
Stars: ✭ 30 (-95.25%)
Mutual labels:  build-tool, build-system
hotbuild
a cross platform hot compilation tool for golang
Stars: ✭ 181 (-71.36%)
Mutual labels:  builder, build-tool
Nginx-builder
A tool to build deb or rpm package of required Nginx version from the source code, with the ability to connect third-party modules. Nginx parameters are set in the yaml configuration file.
Stars: ✭ 143 (-77.37%)
Mutual labels:  builder, build-tool
obs-docu
Official Open Build Service Documentation. Content gets reviewed and edited. Generated books are available at http://www.openbuildservice.org
Stars: ✭ 26 (-95.89%)
Mutual labels:  build-tool, build-system
BuildAMation
Build system and project generator for C/C++ desktop software development. Uses C# for build scripts. It is no longer under active development.
Stars: ✭ 13 (-97.94%)
Mutual labels:  build-tool, build-system
makesure
Simple task/command runner with declarative goals and dependencies
Stars: ✭ 230 (-63.61%)
Mutual labels:  build-tool, build-system
assemble-core
The core assemble application with no presets or defaults. All configuration is left to the implementor.
Stars: ✭ 17 (-97.31%)
Mutual labels:  build-tool, build-system
make
The Ultimate Makefile to compile all your C, C++, Assembly and Fortran projects
Stars: ✭ 41 (-93.51%)
Mutual labels:  build-tool, build-system
rote
Automate everything.
Stars: ✭ 66 (-89.56%)
Mutual labels:  build-tool, build-system
systemjs-tools
(dev)tools for working with SystemJS
Stars: ✭ 41 (-93.51%)
Mutual labels:  build-tool, build-system
alfred
(v0.2) Even Batman needs a little help. Task runner. Automator. Build system.
Stars: ✭ 62 (-90.19%)
Mutual labels:  build-tool, build-system
Bake
A build system that lets you clone, build and run C/C++ projects with a single command
Stars: ✭ 434 (-31.33%)
Mutual labels:  build-tool, build-system
makestudio
Setup your Delphi Environment very easily - build your projects with more comfort
Stars: ✭ 43 (-93.2%)
Mutual labels:  builder, build-tool
b2
B2 makes it easy to build C++ projects, everywhere.
Stars: ✭ 38 (-93.99%)
Mutual labels:  build-tool, build-system

crossbuild

🌍 multiarch cross compiling environments

Build Status

This is a multiarch Docker build environment image. You can use this image to produce binaries for multiple architectures.

Supported targets

Triple Aliases linux osx windows
x86_64-linux-gnu (default), linux, amd64, x86_64 X
arm-linux-gnueabi arm, armv5 X
arm-linux-gnueabihf armhf, armv7, armv7l X
aarch64-linux-gnu arm64, aarch64 X
mipsel-linux-gnu mips, mipsel X
powerpc64le-linux-gnu powerpc, powerpc64, powerpc64le X
x86_64-apple-darwin osx, osx64, darwin, darwin64 X
x86_64h-apple-darwin osx64h, darwin64h, x86_64h X
i386-apple-darwin osx32, darwin32 X
x86_64-w64-mingw32 windows, win64 X
i686-w64-mingw32 win32 X

Using crossbuild

x86_64

$ docker run --rm -v $(pwd):/workdir multiarch/crossbuild make helloworld
cc helloworld.c -o helloworld
$ file helloworld
helloworld: ELF 64-bit LSB  executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=9cfb3d5b46cba98c5aa99db67398afbebb270cb9, not stripped

Misc: using cc instead of make

$ docker run --rm -v $(pwd):/workdir multiarch/crossbuild cc test/helloworld.c

arm

$ docker run --rm -v $(pwd):/workdir -e CROSS_TRIPLE=arm-linux-gnueabi multiarch/crossbuild make helloworld
cc     helloworld.c   -o helloworld
$ file helloworld
helloworld: ELF 32-bit LSB  executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=c8667acaa127072e05ddb9f67a5e48a337c80bc9, not stripped

armhf

$ docker run --rm -v $(pwd):/workdir -e CROSS_TRIPLE=arm-linux-gnueabihf multiarch/crossbuild make helloworld
cc     helloworld.c   -o helloworld
$ file helloworld
helloworld: ELF 32-bit LSB  executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=ad507da0b9aeb78e7b824692d4bae6b2e6084598, not stripped

powerpc 64-bit el

$ docker run --rm -v $(pwd):/workdir -e CROSS_TRIPLE=powerpc64le-linux-gnu multiarch/crossbuild make helloworld
cc     helloworld.c   -o helloworld
$ file helloworld
helloworld: ELF 64-bit LSB  executable, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=035c50a8b410361d3069f77e2ec2454c70a140e8, not st
ripped

arm64

$ docker run --rm -v $(pwd):/workdir -e CROSS_TRIPLE=aarch64-linux-gnu multiarch/crossbuild make helloworld
cc     helloworld.c   -o helloworld
$ file helloworld
helloworld: ELF 64-bit LSB  executable, ARM aarch64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 3.7.0, BuildID[sha1]=dce6100f0bc19504bc19987535f3cc04bd550d60, not stripped

mips el

$ docker run --rm -v $(pwd):/workdir -e CROSS_TRIPLE=mipsel-linux-gnu multiarch/crossbuild make helloworld
cc     helloworld.c   -o helloworld
$ file helloworld
helloworld: ELF 32-bit LSB  executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=d6b2f608a3c1a56b8b990be66eed0c41baaf97cd, not stripped

darwin i386

$ docker run -it --rm -v $(pwd):/workdir -e CROSS_TRIPLE=i386-apple-darwin  multiarch/crossbuild make helloworld
o32-clang     helloworld.c   -o helloworld
$ file helloworld
helloworld: Mach-O executable i386

darwin x86_64

$ docker run -it --rm -v $(pwd):/workdir -e CROSS_TRIPLE=x86_64-apple-darwin  multiarch/crossbuild make helloworld
o64-clang     helloworld.c   -o helloworld
$ file helloworld
helloworld: Mach-O 64-bit executable x86_64

windows i386

$ docker run -it --rm -v $(pwd):/workdir -e CROSS_TRIPLE=i686-w64-mingw32  multiarch/crossbuild make helloworld
o32-clang     helloworld.c   -o helloworld
$ file helloworld
helloworld: PE32 executable (console) Intel 80386, for MS Windows

windows x86_64

$ docker run -it --rm -v $(pwd):/workdir -e CROSS_TRIPLE=x86_64-w64-mingw32  multiarch/crossbuild make helloworld
o64-clang     helloworld.c   -o helloworld
$ file helloworld
helloworld: PE32+ executable (console) x86-64, for MS Windows

Using crossbuild in a Dockerfile

FROM multiarch/crossbuild
RUN git clone https://github.com/bit-spark/objective-c-hello-world
ENV CROSS_TRIPLE=x86_64-apple-darwin
WORKDIR /workdir/objective-c-hello-world
RUN crossbuild ./compile-all.sh

Projects using crossbuild

Credit

This project is inspired by the cross-compiler by the venerable Steeve Morin

Legal note

OSX/Darwin/Apple builds: Please ensure you have read and understood the Xcode license terms before continuing.

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].