Ubuntu 22.04.5에서 빌드 한 파일 scp해 실행 시도 중 glibc 버전 불일치

어플리케이션 파일, usbutils(lsusb) 등 실행 라이브러리를 WSL (우분투 22.04.5 LTS)에서 빌드 후 (aarch64-linux-gnu-gcc) yocto로 scp 복사하여 사용하는 도중, 컴파일러 버전 불일치로 실행이 안됩니다.

[yocto]
root@telechips-tcc8050-main:~# getconf -a | grep glibc
GNU_LIBC_VERSION glibc 2.31
root@telechips-tcc8050-main:~#

이 버전을 이용해야하는것 같은데

아래는 제가 빌드한 것들이고

[WSL]
iamyeju@DESKTOP-NGNQNNT:~$ file hello
hello: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=68a086094212edd604de92fd90893b4c52496ca5, for GNU/Linux 3.7.0, not stripped

iamyeju@DESKTOP-NGNQNNT:~/usbutils-012$ file /tmp/usbutils_arm/bin/lsusb
/tmp/usbutils_arm/bin/lsusb: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=aa99e484ea14a9292d4865f4a2c2329fc0073b3f, for GNU/Linux 3.7.0, with debug_info, not stripped

툴체인 버전 불일치하다고 나옵니다.

root@telechips-tcc8050-main:~# ./hello
./hello: /lib/libc.so.6: version `GLIBC_2.34’ not found (required by ./hello)
root@telechips-tcc8050-main:~#

yocto에서 쓰는 툴체인 버전으로 이용하려면 어떻게 해야하는지 도움주시면 감사하겠습니다.
TARGET_SYS = “aarch64-telechips-linux”

(사용한 툴체인)aarch64-linux-gnu

안녕하세요. 해당 문의에 답변 드립니다.

로컬 환경에서 빌드가 아닌, populate_sdk 빌드 후 환경설정하여 빌드 부탁드립니다.
원래 빌드하시던 directory 위치에서 bitbake topst -c populate_sdk 후 tmp/deploy/sdk 아래에 생성된 4개의 파일 확인 부탁드립니다.
이후 sh파일 실행하여 환경구성을 할 directory 설정을 하고, 해당 directory로 들어가서 파일 생성 및 빌드하시면 됩니다.
이 때 빌드는 ${CC} hello.c -o hello 로 진행하시면 되고, 생성된 바이너리파일은 scp로 보드에 복사하여 실행하시면 됩니다.

감사합니다.

bitbake meta-toolchain 으로 해당 툴체인 얻어서 간단한 소스코드 실행 되는것 확인했습니다.

그러나 동적 라이브러리가 필요한 패키지들은 pkg-config가 인식하도록 해줘야한다고 에러가 떠서 해결중에 있습니다.

감사합니다 해당 부분 해결되었습니다!

1 Like