본문 바로가기
Development/Linux

[LINUX] glibc Cross Complie

by qWooWp 2023. 10. 6.
반응형

이전 글 openSSH 를 빌드하여 실행하니 아래와 같이 메시지가 발생한다. 

 

llibcrypt.so.1: cannot open shared object file: No such file or directory 

 

이것은 glibc 라이브러리중 하나로 소스코드는 아래위치에서 다운로드가 가능하다. 

 

소스다운로드 위치

ftp.gnu.org/gnu/glibc

 

정보 위치

https://en.wikipedia.org/wiki/Crypt_(C) 

 

crypt (C) - Wikipedia

From Wikipedia, the free encyclopedia Key derivation function ("password hash") This article is about the Unix C library function. For the Unix utility, see Crypt (Unix). crypt is a POSIX C library function. It is typically used to compute the hash of user

en.wikipedia.org

 

내 타켓 장치의 커널 버전과 Arm Toochain 의 version 에 따라 사용해야 하는 GLIBC 버전이 달라 진다. 

Kernel Version : 4.19

Arm GCC Version : 11.2

아래 에러에 대해 참고해서 버전선택을 하시면 됩니다. 

 

[ERROR]
libstdc++.so: undefined reference to `pthread_key_create@GLIBC_2.34

<Solution>
GLIBC 2.35 이후 버전 사용

 

 

[ERROR]
 int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) __THROWNL

<Solution>
GLIBC 2.33 이후 버전에서 위 에러에 대해 패치가 됨, GCC 와 호환 문제

 

 

[ERROR]

checking for make... make
checking version of make... 4.1, bad
checking for gnumsgfmt... no

* Make 파일 버전이 최신 버전이기 때문에 발생하는 이슈 

 

 

빌드 방법

1. glibc-ports-2.16 소스를 압축해제 하여 glibc-2.35 디렉토리에 "ports" 이름으로 복사 한다. 
2. mkdir build (configure 실행을 ../configure 로 수행해야 한다. )
3. cd build
4. CC=/tools/arm/gcc/gcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gcc LD=/tools/arm/gcc/gcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-ld AS=/tools/arm/gcc/gcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-as AR=/tools/arm/gcc/gcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-ar CXX=/tools/arm/gcc/gcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-g++ ../configure --host=arm-none-linux-gnueabihf --build=arm-none-linux-gnueabihf --target=arm-none-linux-gnueabihf --prefix=/make/install/path/glibc/result --enable-add-ons=nptl,ports 
5. make

 

CC부터 AR CXX 까지 모두 개별 설정을 해주었다. 버전이 업데이트 되면서 이 작업은 필요 없을 수도 있다. 

--prefix 는 make install 할 때 설치 되는 디렉토리를 지정해 주는 것이다. 

반응형

댓글