32bit용 gcc에서 64bit로 컴파일된 공유 라이브러리를 사용할 수 없나요?
글쓴이: lifemagazine / 작성시간: 수, 2010/03/10 - 3:12오후
안녕하세요.
먼저 환경을 설명드리면, 서버는 HP-UX 11.23에 Intel(R) Itanium 2 9100 series를 사용하고 있습니다.
깔려잇는 gcc는 4.4.3버전입니다.
gcc가 정확히 64bit용인지 32bit용인지 알 수는 없지만,
file명령으로 때려보니 gcc 파일들이 elf-32 인 것을 알 수 있었습니다.
제가 하려는 작업은 특정 공유라이브러리(libklib.sl)를 참조하여 새로운 공유라이브러리를 만드는 작업입니다.
참조하려는 공유라이브러리는 file명령으로 때려보니 elf-64로 나왔습니다.
어쨌든 공유라이브러리를 생성하려고 명령을 때리면, 다음과 같이
참조하려는 공유라이브러리를 찾을 수 없다고 나옵니다.
ld: Can't find library or mismatched ABI for -lklib
물론, LD_LIBRARY_PATH와 SHLIB_PATH도 잘 설정해 주었습니다.
이러한 현재의 문제가 32bit용 gcc에서 64bit로 컴파일된 공유 라이브러리를 찾을 수 없어 생기는 것인지 알고 싶습니다.
꾸벅
Forums:
예 아마 안될겁니다.
32비트하고 64비트는 다른 cpu라고 생각하는게 좋을겁니다.
그래서 64비트 리녹스에서 32비트 프로그램 실행시키려면 32비트 라이브러리 필요합니다.
당연히 32비트 gcc에서 사용할수 있는건 32비트 라이브러리뿐입니다.
타겟이 63비트인 크로스 컴파일러를 사용하면 64비트 라이브러리도 사용가능합니다
즐린
즐린
제가 잘 못 알았습니다. PA-RISC2.0에서 컴파일된 라이브러리였습니다.
단순히 file명령으로 elf-32를 확인하고 32bit인줄 알았는데,
설치 파일을 보니 64bit용이 맞았습니다.
문제는 참조하는 공유라이브러리가 PA-RISC2.0에서 컴파일된 것이었습니다.
설치할 서버는 Itanium 2 9100 series 이었고요.
구글에서 조회를 해보니, 공유라이브러리는 PA-RISC 과 Itanium 사이에 호환이 안된다고 하더군요.
아무튼 감사합니다.
댓글 달기