Add GCC Cross-Compiler

This commit is contained in:
Victor Timofei 2022-04-24 03:21:48 +03:00
parent d8f8c151b8
commit cbc4a19234
Signed by: vtimofei
GPG Key ID: B790DCEBE281403A
4 changed files with 117 additions and 0 deletions

8
.cross_env Normal file
View File

@ -0,0 +1,8 @@
#!/usr/bin/bash
PREFIX="${PWD}/cross"
TARGET=i686-elf
PATH="${PWD}/cross/bin:${PATH}"
export PATH \
TARGET \
PREFIX

5
.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
gcc.tar.gz
binutils.tar.gz
cross/
gcc-*/
binutils-*/

79
Makefile Normal file
View File

@ -0,0 +1,79 @@
BINUTILS_VERSION=2.38
GCC_VERSION=11.2.0
PREFIX=${PWD}/cross
CROSS_BIN=${PREFIX}/bin
TARGET=i686-elf
export PATH:=${CROSS_BIN}:$(PATH)
.PHONY: crossdev
crossdev: install-binutils install-gcc install-target-libgcc
.PHONY: install-binutils
install-binutils: build-binutils ${CROSS_BIN}
@$(MAKE) -C binutils-${BINUTILS_VERSION}/build install
.PHONY: install-gcc
install-gcc: all-gcc ${CROSS_BIN}
@$(MAKE) -C gcc-${GCC_VERSION}/build $@
.PHONY: install-target-libgcc
install-target-libgcc: all-target-libgcc ${CROSS_BIN}
@$(MAKE) -C gcc-${GCC_VERSION}/build $@
${CROSS_BIN}:
@mkdir -p $@
.PHONY: build-binutils
build-binutils: binutils-${BINUTILS_VERSION}/build/Makefile
@dirname $< | \
xargs \
$(MAKE) -C
.PHONY: all-gcc
all-gcc: gcc-${GCC_VERSION}/build/Makefile install-binutils
@dirname $< | \
xargs -I {} \
$(MAKE) -C {} $@
.PHONY: all-target-libgcc
all-target-libgcc: gcc-${GCC_VERSION}/build/Makefile install-binutils
@dirname $< | \
xargs -I {} \
$(MAKE) -C {} $@
binutils-${BINUTILS_VERSION}/build/Makefile: binutils-${BINUTILS_VERSION}/build
@cd $< && \
../configure \
--target="${TARGET}" \
--prefix="${PREFIX}" \
--with-sysroot \
--disable-nls \
--disable-werror
gcc-${GCC_VERSION}/build/Makefile: gcc-${GCC_VERSION}/build install-binutils
@cd $< && \
../configure \
--target="${TARGET}" \
--prefix="${PREFIX}" \
--disable-nls \
--enable-languages=c,c++ \
--without-headers
binutils-${BINUTILS_VERSION}/build: binutils-${BINUTILS_VERSION}
@mkdir -p $@
gcc-${GCC_VERSION}/build: gcc-${GCC_VERSION}
@mkdir -p $@
binutils-${BINUTILS_VERSION}: binutils.tar.gz
@tar xf $<
gcc-${GCC_VERSION}: gcc.tar.gz
@tar xf $<
binutils.tar.gz:
@curl -o $@ https://ftp.gnu.org/gnu/binutils/binutils-${BINUTILS_VERSION}.tar.gz
gcc.tar.gz:
@curl -o $@ https://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.gz

View File

@ -1 +1,26 @@
# OS # OS
## GCC Cross-Compiler
### Build requirements
- Unix-like environment
- GCC
- Make
- Bison
- Flex
- GMP
- MPFR
- MPC
- Texinfo
### Install
```shell
make crossdev
```
### Load the environment
```shell
source .cross_env
```