크로스 컴파일 할 때 동적 라이브러리 사용시 문의 드립니다.
글쓴이: namhw / 작성시간: 금, 2010/11/26 - 1:52오후
예시로 SDL을 사용하는 어플리케이션을 크로스컴파일 한다고 가정하겠습니다.
현재 컴파일이 진행되는 x86 PC에는 SDL 라이브러리가 설치되었고 해당 어플리케이션의 컴파일 또한 문제없이 이뤄졌습니다.
다만 크로스 컴파일을 할 때 링킹 타임에 "skipping incompatible /usr/lib/libSDL.so" 와 같은 에러가 발생하면서
컴파일이 진행되지 않습니다. 위에서 언급한 libSDL.so 은 당연히 x86용 라이브러리이기 때문에 arm 크로스 컴파일러에서는
당연히 사용하지 못하는게 맞겠지만요.
처음 예상으로는 동적라이브러리(.so 파일)는 경우 실행시 로더에서만 필요하고 컴파일시에는 헤더 정보만 있으면 된다고 생각했었습니다.
따라서 헤더 정보만 존재하면 컴파일은 문제없이 이뤄질거라 생각했습니다. 원래 크로스 컴파일을 할 때 정적라이브러리(.a)의 경우
당연히 해당 CPU에 맞게 컴파일된 라이브러리가 필요하겠지만, 동적 라이브러리의 경우는 그렇지 않다고 생각하는데요.
이와 관련해서 조언을 좀 부탁드리겠습니다.
Forums:
경로지정
-L 옵션으로 경로를 직접 지정해 주거나,
-rpath 로 root filesystem을 지정해 주세요.
답변 감사합니다.
그러면 -L 옵션으로 정해준 경로에는 arm용의 동적라이브러리(.so) 파일들이 위치하면 되는 건가요?
제 희망?으로는 .so는 컴파일시 직접 실행파일을 생성하는데 포함되지 않고, 심볼테이블 정도만
사용할 거라 예상했고, 따라서 x86용 동적라이브러리를 그대로 사용할 수 있으면 좋겠단 생각을 갖고
작업을 하고 있었습니다.
그리고 추가 질문으로 컴파일시 많은 라이브러리 파일이 필요하다고 했을때 사용된 모든 라이브러리들을
해당 CPU에 맞게 컴파일한 후 가지고 있어야 하는 거겠죠?
촌놈.
댓글 달기