Coder Social home page Coder Social logo

omnicross's Introduction

      

      #====  =  =   = =  ==== ===> ==\   <==== ==>  ==>
      #| || ||\/|| ||\||  ||  ||   |=/   || || ||=\ ||=\
      #===> V    V V   V ==== ===> V `\' ====> <==/ <==/ 


Omnicross  Build a musl, uClibc, glibc or dietlibc based cross compiler.
	
(C) Copyright 2015. `Omnicross'. MIT License, CM Graff 



Installation:
	Retrieve the source code:
		git clone https://github.com/cmgraff/omnicross
		cd omnicross

	Build:
		./build.sh 




Sparse installation (for slow networks):
	Retrieve the source code:
		mkdir -p omnicross
		cd omnicross
		i="https://raw.githubusercontent.com/cmgraff/omnicross/master/"
		wget "${i}/build.sh" 
		mkdir patches
		cd patches
		wget "${i}/patches/gcc-4.9.2-musl.diff"
		cd ..
		chmod +x build.sh

	Build: 
		./build.sh

	

Notes on efficacy:
	glibc, musl and deitlibc are working correctly and as intended. However
	the uClibc second gcc stage is not getting installed correctly and so 
	will only work with static linking. Fixing this is currently my top
	priority for omnicross.
	


Modifying and understanding the code in Omnicross:

	At this juncture in time all code and configuration is contained
	within a single file "build.sh". The "patches" and "src" dirs
	contain the needed compressed packages to make a cross compiler (
	gcc, gmp, libc etc). If they are not populated with the versions 
	of utilities you need -- then the simple network retrieval function 
	"common_obtain_source_code" can be invoked by uncommenting it.
	
	All variable declarations are made at the beginning of the file and
	are prefixed with "MY" so as to maitain clarity and not interfere
	with any aspects of the build environment or shell.

	To select an architecture, open the main build.sh file and modify
	MYTARG and MYLINUXARCH.  


		# aarch64
        		#MYTARG="aarch64-linux"
        		#MYLINUXARCH="arm64"

		# i586
        		MYTARG="i586-linux"
        		MYLINUXARCH="x86"

		# x86_64
        		#MYTARG="x86_64-linux"
        		#MYLINUXARCH="x86_64" 
	
	Functions that are C library specific are prefixed with "glibc_" 
	or "musl_" whereas functions that are shared between all package 
	sets (libc's) are prefixed with "common_".  

	If you are building against musl C libraries any functions
	not prefixed as "common_" or "musl_" should be commented out or
	controlled by various tests that I or the user/developer might 
	insert. And likewise for glibc or dietlibc, only functions prefixed 
	"*libc_" and "common_" should be invoked.
	
	These functions are invoked at the end of the script in a section
	labeled "stages", it appears as follows, modify it accordingly to 
	your needs:
		# stages:
		#common_obtainsource
		common_clean 
		common_binutils_stage
		common_linux_stage
		common_gcc_stage_one
		#glibc_stage
		#newlib_stage 
		musl_stage
		#uclibc_stage
		#dietlibc_stage


	

	Hopefully this method is simple enough to maintain a logical 
	control flow that can be easily understood and modified by all
	of Omnicross's users.  
	




IRC / email:
	Omnicross has a support channel on freenode #omnicross.
	I can also be reached at [email protected].



TODO:
	uclibc -- fix dynamic linking with second gcc stage 
	bsd support with gcc
	bsd support with clang
	

Notes:


	These are the versions of various tools used to build this script.
	They are here for documentation purposes so that the steps can be
	reproduced at a later date if needed.


	date
	Wed Jul 15 17:27:55 CDT 2015

	make -v
	GNU Make 3.81 
	This program built for x86_64-pc-linux-gnu

	gawk -V
	GNU Awk 4.0.1
	Copyright (C) 1989, 1991-2012 Free Software Foundation.

	gcc -v 
	Target: x86_64-linux-gnu 
	Thread model: posix
	gcc version 4.7.2 (Debian 4.7.2-5)

	cat /etc/debian_version 
	7.7

	uname -a
	Linux debiah 3.2.0-4-amd64 #1 SMP Debian 3.2.63-2+deb7u1
		 x86_64 GNU/Linux

References:
	"Building Embedded Linux Systems", Karim Yaghmour
	

omnicross's People

Stargazers

Bocke avatar

Watchers

// /∫ ∫∫ ∫prosodyVvVereableContext( (( [[ [( ( avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.