티스토리 뷰

반응형

기간 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 입니다.

 

머리가 지끈지끈 하며 아픕니다... 이걸 어떻게 해야 해야 할지... 고민 스럽습니다.

 

 

반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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
글 보관함