2017-12-23 4 views
0

내 라우터에서 MIPSEL에 대해 교차 컴파일을 시도하고 있습니다. 어셈블리에서 작동하는 것들을 가지고 있지만, 이제는 기본 C 코드를 컴파일하려고합니다.어떤 libc.so가 링크로 변경됩니까?

현재 간단한 hello world c 코드가 있으며 어셈블리 용으로 작동하는 mipsel-linux-gnu-gcc 컴파일러를 사용합니다.

컴파일러 명령 :

mipsel-linux-gnu-gcc -L/home/uname/devel/extr/squashfs-root/lib -l:libc.so.0 -mips32 -Wl,--build-id=none -Wl,--dynamic-linker=/lib/ld-uClibc.so.0 ma.c 

libc.so.0 라우터의 펌웨어로부터 추출된다.

이 프로그램은 컴파일

그러나 readelf에, 문제는 펌웨어에서 비지 박스 바이너리를 당기고에 readelf를 실행하는 반면 libc.so.6으로

0x00000001 (NEEDED)      Shared library: [libc.so.6] 

에 대한 링크이다

0x00000001 (NEEDED)      Shared library: [libc.so.0] 

libc.so.0에 링크하려면 어떻게해야합니까?

답변

0

표준 glibc 경로를 부정 할 필요가있는 것처럼 보입니다. 컴파일러가 먼저이를 확인하므로. 이것은 -nostdinc으로 컴파일하면됩니다.

0

here.이 그것을 알아 냈 논의 그런 다음 -I해야합니다

는 GCC 헤더 등을 포함한다. buildroot를 사용하여 uClibc 툴체인을 빌드해야했습니다.

관련 문제