도와주세요!!
글 수 15,339
2008.05.09 14:05:34 (*.238.133.153)
6687
안녕하세요. 예전에 vmware에서 nfs가 안되서 본사까지 갔던 knst 김수현입니다.
비록 그때 해결은 못했지만 바쁘신 와중에 수고하신것 감사드립니다.
지금은 리눅스전용 서버컴으로 사용해서 잘쓰고 있습니다. 아무래도 노트북이 이상한것같았어요.;
이번에는 다름이 아니고 크로스컴파일에 관한내용에 대해 질문인데 결론부터 말씀드리고 환경과 진행내용을 말씀드리겠습니다.
일단 본 홈피에서 toolchain kenel 2.6 버젼을 다운받아서 설치를 하고 nfs를 이용하여 arm-gcc를 이용
간단한 크로스컴파일 테스트를 확인완료.
그후 path명령으로 arm-gcc가 설치된 path를 맨앞으로 지정하여 arm_gcc가 실행되게 하였고
configure --host=arm-linux --prefix=/I'm/path/ --enable-threads=no --enable-libstdcxx-pch --enable-languages=c 로주고 컴파일
하였습니다.(옵션 지정 안해보고 해보고, yes, no선택하면서 해봤습니다.)
flex, bison, perl, m4등의 파싱과 관련된 유틸을써야 하는 프로그램인데 에러부분은 셀프로 처리하고 컴파일은 컴플릿되었습니다. 그리고 나서 보드에서 nfs를 통하여 돌려봤는데,
error while loading shared libraries : libstdc++.so.6 can't open share objecy라고 뜨면서 실행이 안됐습니다.
그래서 실행파일을 ldd를 통해서 need되는 lib를 알아봤더니
libstdc++.so.6, libm.so.6, libgcc_s.so.1, libdl.so.2, libc.so.6 이렇게 5개 lib가 필요해서
보드에 lib들을 cp하려했지만 용량 부족으로 LD_LIBRARY_PATH확인후 path에 심볼링 링크를 시켰습니다.
실행파일이 실행은 되는데 알수없는 어셈블러형식이 쭉 뜨더군요. (첨부파일에 내용 있습니다.)
제 추측으로는 libc.so.6과 libgcc_s.so.1에 문제가 있는듯 보입니다. 보드에 처음에 libc.so.6파일이 있는데 다른 lib들 링크시키고 실행하면
libc.so.6을 사용하려면 gcc.3.3을 필요로 한다는 문구가 뜹니다. (arm_gcc 3.4.x) 그래서 다른 lib는 괜찮은데 libc.so.6요놈과
libgcc_s.so.1만 카피하면 어셈블러가 보드 재부팅할때까지 계속 뜹니다. 링크하면 위에글처럼 되구요.
그래서 궁금한것이,
1. 크로스 컴파일할때 공유라이브러리 설정부분을 해줘야하는지에 관한 궁금사항이있습니다.
2. 크로스컴파일시 다른 유의사항이 있는지에 대한것들 조언부탁드릴게요.
3. libc.so.6 가 gcc에 참조되는 lib로 알고있는데 다른 유의사항이 있을지에 대해 조언부탁드립니다.
아참, 환경은 intel x86 linux enterprise4 (32bit, kenel 2.6)
EZ-X5 board
minicom, NFS 사용
이 외의 환경은 안적어 드려도 될것같네요.
그럼 바쁘신와중에 수고하십시요.
비록 그때 해결은 못했지만 바쁘신 와중에 수고하신것 감사드립니다.
지금은 리눅스전용 서버컴으로 사용해서 잘쓰고 있습니다. 아무래도 노트북이 이상한것같았어요.;
이번에는 다름이 아니고 크로스컴파일에 관한내용에 대해 질문인데 결론부터 말씀드리고 환경과 진행내용을 말씀드리겠습니다.
일단 본 홈피에서 toolchain kenel 2.6 버젼을 다운받아서 설치를 하고 nfs를 이용하여 arm-gcc를 이용
간단한 크로스컴파일 테스트를 확인완료.
그후 path명령으로 arm-gcc가 설치된 path를 맨앞으로 지정하여 arm_gcc가 실행되게 하였고
configure --host=arm-linux --prefix=/I'm/path/ --enable-threads=no --enable-libstdcxx-pch --enable-languages=c 로주고 컴파일
하였습니다.(옵션 지정 안해보고 해보고, yes, no선택하면서 해봤습니다.)
flex, bison, perl, m4등의 파싱과 관련된 유틸을써야 하는 프로그램인데 에러부분은 셀프로 처리하고 컴파일은 컴플릿되었습니다. 그리고 나서 보드에서 nfs를 통하여 돌려봤는데,
error while loading shared libraries : libstdc++.so.6 can't open share objecy라고 뜨면서 실행이 안됐습니다.
그래서 실행파일을 ldd를 통해서 need되는 lib를 알아봤더니
libstdc++.so.6, libm.so.6, libgcc_s.so.1, libdl.so.2, libc.so.6 이렇게 5개 lib가 필요해서
보드에 lib들을 cp하려했지만 용량 부족으로 LD_LIBRARY_PATH확인후 path에 심볼링 링크를 시켰습니다.
실행파일이 실행은 되는데 알수없는 어셈블러형식이 쭉 뜨더군요. (첨부파일에 내용 있습니다.)
제 추측으로는 libc.so.6과 libgcc_s.so.1에 문제가 있는듯 보입니다. 보드에 처음에 libc.so.6파일이 있는데 다른 lib들 링크시키고 실행하면
libc.so.6을 사용하려면 gcc.3.3을 필요로 한다는 문구가 뜹니다. (arm_gcc 3.4.x) 그래서 다른 lib는 괜찮은데 libc.so.6요놈과
libgcc_s.so.1만 카피하면 어셈블러가 보드 재부팅할때까지 계속 뜹니다. 링크하면 위에글처럼 되구요.
그래서 궁금한것이,
1. 크로스 컴파일할때 공유라이브러리 설정부분을 해줘야하는지에 관한 궁금사항이있습니다.
2. 크로스컴파일시 다른 유의사항이 있는지에 대한것들 조언부탁드릴게요.
3. libc.so.6 가 gcc에 참조되는 lib로 알고있는데 다른 유의사항이 있을지에 대해 조언부탁드립니다.
아참, 환경은 intel x86 linux enterprise4 (32bit, kenel 2.6)
EZ-X5 board
minicom, NFS 사용
이 외의 환경은 안적어 드려도 될것같네요.
그럼 바쁘신와중에 수고하십시요.
안녕하세요..
현재 EZ-X5 보드에 올리신 커널버젼이 어떻게 되나요???
1. 크로스 컴파일할때 공유라이브러리 설정부분을 해줘야하는지에 관한 궁금사항이있습니다.
공유라이브러리를 /lib 가 아니 다른 디렉토리라면 LD_LIBRARY_PATH로 PATH를 잡아 주셔야 합니다.
PATH를 잡은 후 꼭 set 명령으로 정상적으로 잡혔는지 확인 해 주세요..
2. 크로스컴파일시 다른 유의사항이 있는지에 대한것들 조언부탁드릴게요.
타겟보드의 커널과 램디스크에 맞는 크로스 컴파일러를 설치하셔야 합니다.
3. libc.so.6 가 gcc에 참조되는 lib로 알고있는데 다른 유의사항이 있을지에 대해 조언부탁드립니다.
특별히 유의 사항은 없는 것으로 알고 있습니다.
그럼 좋은 하루 되세요..