티스토리 뷰
기간 VirtualBox의 Ubuntu x86_64 기반으로 kernel이나 u-boot등을 coress compile 작업등을 했으며
Buildroot를 기반으로 Root File System등을 구축하여 Embeded Board인 OrangePI One에
작업을 했습니다.
매번 Application 작업을 할때 마다 VirtualBox에서 Cross Compile 후 다시 Board로 복사해서 테스트
하려면 매번 번거로워서, 아래 ARM 기반으로 최신 GCC Compiler를 이식 하기로 했습니다.
전제 환경
작업 전 환경조건으로 x86용 GCC와 arm cross compiler가 설치 되어 있다는 전제 하에서 설명 합니다.만약 설치되어 있지 않다면 , 제 게시글에 arm cross compiler 내용이 있습니다. https://runman93.tistory.com/76
OrangePI Board 개발 환경
OS : 우분투 24 (64Bit) OrangePI의 arm cpu는 H3 로, 32Bit 임 가상머신 : Virtual Box (스토리지는 넉넉하게 30G 이상 권장) Windows Host에서 VirtualBox의 공유폴더 사용하여 Linux Guest에서 Mount 후 해당 디렉토
runman93.tistory.com
필수 구성요소 설치
설명은 Ubuntu 기준으로 설명 드리며 root 계정으로 해야 합니다.일반 계정 이라면 sudo 명령을 사용해야 합니다.
apt-get install bzip2
apt-get install vim
apt-get install make
apt-get install gcc
apt-get install g++
apt-get install kernel-package
apt-get install libncurses5-dev
apt-get install bison
apt-get install flex
apt-get install libssl-dev
apt-get install python3
apt-get install gawk
apt-get install binutils
apt-get install build-essential
apt-get install perl
apt-get install libgmp-dev
apt-get install libmpfr-dev
apt-get install libmpc-dev
apt-get install libisl-dev
apt-get install libzstd-dev
apt-get install gettext
apt-get install m4
apt-get install automake
apt-get install libtoolize
apt-get install gperf
apt-get install zlib1g-dev
apt-get install libgettextpo-dev
apt-get install binutils-multiarch
Compile 준비 환경
이제 GNU GCC Source Code를 Download 합니다.
미리 적당한 디렉토리를 생성해 두세요.
https://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-14.2.0/
Index of /software/gcc/releases/gcc-14.2.0/
ftp.tsukuba.wide.ad.jp
저는 wget 명령을 이용하여 Downlaod 했습니다.
wget https://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-14.2.0/gcc-14.2.0.tar.gz
파일을 Download 한후에는 압축을 해제 합니다.
tar xvf gcc-14.2.0.tar.gz
압축이 정상적으로 해제 되었을 겁니다.
Compile을 위해서 앞서 설명한 필수 Package를 설치 했음에도 실제 컴파일을 하게 되면libz.h 파일을 찾을수 없다는 Error를 발생하게 됩니다.
이러한 문제를 위해서 GNU에서는 필요한 Package Source를 자체 디렉토리에 설치 할수 있도록 되어 있습니다.
압축이 해제된 GCC Source 디렉토리로 이동 후 다음 아래와 같이 실행 합니다.
./contrib/download_prerequisites
위 명령어 에서 보듯이 필요한 Package를 해당 디렉토리에 설치하게 됩니다.
이제 Compile이 실제 수행될 디렉토리를 만들어야 합니다.
보통은 Source가 존재 하는 곳에서 Compile을 하는 것이 보통 이지만, gcc 는 cmake 사용 하는 것처럼
다른 별도의 build 디렉토리에서 해야 합니다. 이는 GNU GCC에서 권장하고 있습니다.
절대 압축 해제한 gcc source에 build 디렉토리를 만들면 않됩니다. 그럼 error가 발생 할 것 입니다.
예를 들어 다음 아래와 같이 합니다.
ls -al
/gcc-14.2.0
mkdir build
cd build
이제 build 디렉토리로 이동 하여 다음 아래와 같이 수행 합니다.
저의 경우 Cross compile가 linaro-14.0.0 이고 arm-linux-gnueabihf Version 이라서
다음 아래와 같이 했습니다.
../gcc-14.2.0/configure \
--build=x86_64-linux-gnu \
--host=arm-linux-gnueabihf \
--target=arm-linux-gnueabihf \
--with-gcc-major-version-only \
--program-suffix=-11 \
--enable-checking=release \
--enable-languages=c,c++ \
--enable-multilib \
--enable-shared \
--enable-linker-build-id \
--libexecdir=/usr/lib \
--enable-threads=posix \
--libdir=/usr/lib \
--enable-nls \
--enable-bootstrap \
--enable-clocale=gnu \
--enable-libstdcxx-debug \
--enable-libstdcxx-time=yes \
--enable-gnu-unique-object \
--disable-vtable-verify \
--enable-plugin \
--enable-default-pie \
--enable-libphobos-checking=release \
--with-target-system-zlib=auto \
--enable-objc-gc=auto \
--disable-werror \
--enable-cet \
--with-pkgversion='runman93 ARM(H3) Compiler 6.9-rc7'
Configuration 작업이 정상적으로 완료 되었다면. 이제 Compile 작업을 수행해 봅니다.
Compile 수행
make
Compile을 수행하게 되면.... 엄청나게 스크롤이 진행 됩니다... 정말 많습니다.
그러나 다음 아래와 같은 Error가 발생하게 됩니다.
제가 사용중인 Cross Compiler가 linaro-14.0.0 버전 인데 Compile 하고자 하는 gcc source 는 14.2.0 Version 입니다.
-std=gnu++26 option이 갑자기 튀어 나왔습니다.... linaro-14.0.0 Version에서는 지원하지 않아서 발생한
Error 입니다.
머리가 지끈지끈 하며 아픕니다... 이걸 어떻게 해야 해야 할지... 고민 스럽습니다.
'개발자 이야기 > ARM Cross Compile' 카테고리의 다른 글
ARM H3 오렌지 파이 32bit GNU C, C++ Compiler #2 (0) | 2024.12.16 |
---|---|
ARM H3 오렌지 파이 32bit GNU C, C++ Compiler (1) | 2024.12.16 |
GNU GCC Source 로 나만의 arm 기반 Compiler 구축 #3 (0) | 2024.12.12 |
GNU GCC Source 로 나만의 arm 기반 Compiler 구축 #2 (0) | 2024.12.11 |
Linux Kernel Compile시 net_device 에러 (0) | 2024.11.20 |
Buildroot 를 사용하여 임베이디드 시스템 구축 #2 (0) | 2024.11.18 |
Buildroot를 사용하여 임베디드 시스템 구축 #1 (4) | 2024.11.14 |
ARM Ubuntu 저장소 변경 하기 (0) | 2024.11.08 |
- Total
- Today
- Yesterday
- 사무실
- 베란다
- 여행
- 커널
- 채소 키우기
- cross compile
- 고흥
- arm
- GCC
- kernel
- 크로스컴파일
- 버추얼박스
- 벌교
- 임베이디드
- embeded
- Android
- 수경재배
- CubieBoard2
- 커피컵
- 1회용
- 식물 키우기
- Linux
- 식물
- 상추
- 1회용컵
- 식물키우기
- 리눅스
- C++
- C
- 큐비보드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |