2014-04-18 17 views
3

uClinux를 실행하는 ARM 프로세서로 임베디드 시스템 용 "hello world"C 응용 프로그램을 컴파일하려고합니다. 이 사용하고 있습니다 toolchainuclinux - libc.so.0 라이브러리와의 링크

-static 컴파일 플래그가있는 C 응용 프로그램을 컴파일하면 응용 프로그램이 정상적으로 작동하고 있습니다. - 내가 -static 플래그를 제거 할 때 나는 오류가 있어요 : can't load library 'libc.so.6'

libc.so.6으로는 대상 장치/lib 폴더에 대상에 존재하지 않습니다 libuClibc에 심볼릭 링크 libc.so.0 포인트 -0.9.33.2.so

컴파일러에게 libc.so.0과 연결되도록 "알리는"방법은 무엇입니까?

+0

같은 문제가있는 해결책을 찾았습니까? – Merom

+0

@Merom : 크로스 툴 - NG를 사용하여 툴체인을 컴파일했고 파일 작업 중입니다. – Dima

+0

나는 같은 형제를했다. 그러나 나는 실패했다! !! – Merom

답변

2

사용중인 툴체인이 glibc 용으로 제작 된 것 같습니다. 그러나 타겟 보드에는 uClibc가 설치되어 있습니다.
이 두 라이브러리는 호환되지 않습니다.
런타임에는 호환되지 않으며 컴파일시 호환되지 않습니다.
당신은 "다른 & 호환되지 않는 라이브러리를 사용하는 컴파일러를 말할 수 없다.
을 대신의 glibc/eglibc의와 uClibc를 위해 특별히 구축 된 툴체인을 받아야합니다.

일부 신뢰성을 가지고하는 데 사용되는 사이트 gnuarm.com를 툴체인하지만, 해당 사이트는 더 이상이다.

당신은 시도하고 개별 툴체인 패키지를 구축하는 것보다 훨씬 쉽다 crosstool-NG를 사용하여 자신의 툴 체인을 구축 할 수있다. arm-unknown-linux-uclibcgnueabi 구성을 시도하고 사용자의 요구에 사용자 정의 할 수 있습니다.

-1

너 -I를 제거하면 "load XXX.lib"코드를 코드에 추가해야합니다. Google에서 찾을 수있는 정적 링크와 동적 링크에는 몇 가지 차이점이 있습니다.