[완료] 크로스 컴파일 환경을 만들려는데 컴파일러가 glibc 경로를 못찾네요.
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 <= 요렇게 에러 메세지가 나옵니다.
리눅스를 첨 접해봐서 어려움이 많습니다. 도움좀 주세요~
Cygwin 환경에서 cross
Cygwin 환경에서 cross compiler 빌드가 쉽지 않으셨을텐데
어떻게 빌드를 잘 마치셨군요.
GCC는 secondary build까지 하셨는지 확인해주시면
다른 분들이 답변하시기 더 좋을것 같습니다.
그리고 쉽게 하시려면
www.codesourcery.com 에 가시면
그냥 바이너리를 구하실 수 있습니다. ;;
참고해주세요.
에구 죄송합니다.
제대로 확인도 안하고..
제가 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 하니깐 잘되네요.
답변과 관심 감사드립니다.
너무 허접한 질문이라서 지울까 하다가 혹시나 저같은 초보분에게 도움이 될수도 있을거 같아 놔둡니다.
큰 도움이 되었습니다.
gcc 크로스 컴파일을 자주 하는 편인데, gcc bootstrap 에서는 문제가
안생기다가 gcc full compilation 에서는 언젠가부터(?)
.../ld: cannot find crti.o..
와 같은 에러가 발생하네요. 님이 말씀해 주신 --with-libs 로 해결했습니다.
Best Regards,
Young-Su Kwon
댓글 달기