기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

타겟보드에서 프로그램 실행시 에러

./pro_t1: /lib/libc.so.6: version `GLIBC_2.17' not found (required by libapx.so.1)                        


타켓보드의 nm libc.so.6  심볼정보
0006ad44 T _IO_file_attach@@GLIBC_2.4
0006d164 T _IO_file_close_it@@GLIBC_2.4
0006d0e8 T _IO_file_finish@@GLIBC_2.4
0006ca34 T _IO_file_fopen@@GLIBC_2.4
0006d0b4 T _IO_file_init@@GLIBC_2.4
0006c2fc T _IO_file_overflow@@GLIBC_2.4
0006bd64 T _IO_file_seekoff@@GLIBC_2.4
0006c834 T _IO_file_setbuf@@GLIBC_2.4
0006c210 T _IO_file_sync@@GLIBC_2.4
0006c504 T _IO_file_underflow@@GLIBC_2.4
0006bc30 T _IO_file_write@@GLIBC_2.4
0006b9f8 T _IO_file_xsputn@@GLIBC_2.4
0005f628 T _IO_fopen@@GLIBC_2.4
000627ac T _IO_fsetpos64@@GLIBC_2.4
0005fc7c T _IO_fsetpos@@GLIBC_2.4


apx 라이브러리를 만들때 GLIBC 2.17을 이용한것같고

타겟보드에서는 2.4를 사용하는데

서로 호환이 안되서 에러가 나고 있는 상태인데요


보드쪽으로 버전을 맞추어야 하는 상태인데요

참조라이브러리가 하위버전에 맞게 들어가야하는데 이런문제를 해결할 방법이 있나요?


검색해보니 같은 내용의 대처법이 나오는데

https://kldp.org/node/136157


컴파일을


CFLAGS = -Wl,-Bstatic -L./lib -apx -Wl,-Bdynamic -lpthread -std=gnu++11

으로 변경하면 cannot find -lapx 라고 메시지가 나오더라구요


GLIBC 버전문제 해결할 방법이 있나요??



고도리

2016.12.09 00:05:00
*.200.239.210

so로 되어 있다면 쉽지는 않을겁니다.

그리고, 동작된다라고 해도 동작의 정확성을 보장 못할 수도 있을 가능성이 높습니다.


libapx라는 라이브러리가 그냥 binary로만 되어 있나요?




pedor11

2016.12.10 01:17:41
*.62.229.32

라이브러리는 소스형태로 있습니다

이게 버전이 호환이안되는게 컴파일 옵션에 -std=c++11 옵션이 있더라구요

제가 기존에는 arm-none-linux-gnueabi-g++(arm-2009q3-64-arm-none-linux-gnueabi) 버전을 사용했는데

컴파일 옵션에 -std=c++11을 사용하니 cc1plus: error: unrecognized command line option "-std=c++11"

메시지가 나오더라구요

그래서 최신 arm-2014.05.29 버전을 받아서 컴파일하니깐 정상빌드가 되어서 보드에 포팅하니 저런 에러가 나왔는데요

-std=c++11을 빼서 컴파일하자니 코드에서 에러가 우수수나오고 옛날버전에도 호환되도록 코드를 고쳐야 하는건가요?;;;

고도리

2016.12.12 21:21:43
*.200.239.210

소스가 있다면 고쳐서 쓰시는게 좋을겁니다.


gcc 버전 4.8서부터인가는 c++ 11을 지원합니다.

C++이 gcc의 가장 고질적인 문제였는데, 표준화가 되면서 안드로이드도 롤리팝서부터인가 4.9로 바뀌었을겁니다


라이브러리가 얼마나 클지는 모르겠는데(내부에서 새롭게 만든 걸로 보여집니다만), 큰 문제가 아니라면 손봐서 쓰시는게 좋습니다.


이제는 C++이 표준화가 되면서 컴파일러가 거기에 맞춰졌기 때문입니다.



List of Articles
번호 제목 글쓴이 날짜 조회 수

사용자 로그인