[완료] 크로스 컴파일 환경을 만들려는데 컴파일러가 glibc 경로를 못찾네요.

churli의 이미지

Sygwin 환경에서

arm용 gcc, binutils, glibc 소스를 받아 각각 /usr/local/arm/ 위치에 설치 했습니다.

무사히 설치는 완료 했는데요 아래와 같은 소스를 컴파일 하면 문제가 생기네요.

// mytest.c

#include

int main()
{
printf("hello linux \n");

return 0;
}

// end of file

위 소스를 " $> arm-linux-gcc mytest.c" 와 같이 빌드를 하면 stdio.h 를 찾을수 없다고 에러가 나옵니다.
그래서 " $> arm-linux-gcc -I/usr/local/arm/glibc/arm-linux/include mytest.c " 라고 해보면
stdio.h 를 찾긴 하는데 컴파일 하고나서 링크 할때 또다시 crt1.o 를 찾을수 없다고 나옵니다. crt1.o는 glibc가 설치된 곳에 분명이 있습니다.

-l 옵션도 써보고 LD_LIBRARY_PATH 에도 등록을 해봤는데 crt1.o를 찾을수 없다고 나오네요.
/usr/local/arm/arm-linux/bin/ld: cannot open crt1.o: No such file or directory <= 요렇게

마지막으로 찾을수 없다는 라이브러리 파일을 모두 소스 파일이 있는곳으로 복사를 한후 실행을 하니
/usr/local/arm/arm-linux/bin/ld: cannot find -lc <= 요렇게 에러 메세지가 나옵니다.

리눅스를 첨 접해봐서 어려움이 많습니다. 도움좀 주세요~

vacancy의 이미지


Cygwin 환경에서 cross compiler 빌드가 쉽지 않으셨을텐데
어떻게 빌드를 잘 마치셨군요.
GCC는 secondary build까지 하셨는지 확인해주시면
다른 분들이 답변하시기 더 좋을것 같습니다.

그리고 쉽게 하시려면
www.codesourcery.com 에 가시면
그냥 바이너리를 구하실 수 있습니다. ;;

참고해주세요.

churli의 이미지

제대로 확인도 안하고..

제가 gcc configure 할때 glibc 경로를 제대로 잡아 주질 않았네요.

configure 옵션에서 --with-headers=/usr/local/arm/glibc/arm-linux-glic/include \
--with-libs=/usr/local/arm/glibc/arm-linux-glic/lib

요렇게 configure 하고 make, make install 하니깐 잘되네요.

답변과 관심 감사드립니다.

너무 허접한 질문이라서 지울까 하다가 혹시나 저같은 초보분에게 도움이 될수도 있을거 같아 놔둡니다.

yskwon22의 이미지


gcc 크로스 컴파일을 자주 하는 편인데, gcc bootstrap 에서는 문제가
안생기다가 gcc full compilation 에서는 언젠가부터(?)

.../ld: cannot find crti.o..

와 같은 에러가 발생하네요. 님이 말씀해 주신 --with-libs 로 해결했습니다.

Best Regards,

Young-Su Kwon