32bit로 빌드된 .so 파일을 64bit프로그램에서 링크할 수 있나요?
글쓴이: vudghkzm / 작성시간: 수, 2009/11/18 - 2:52오후
amd64용 우분투 리눅스를 사용중입니다.
드라이버를 직접 빌드할 일이 생겼습니다. 하드웨어 벤더에선 32bit(i386) 드라이버 소스코드만을 제공하고 있고요, 그 안에 빌드시에 필요한 .so 파일이 들어있네요. 그런데 .so파일의 경우, 이 파일을 직접 빌드할 수 있는 소스코드는 같이 제공하고 있지 않습니다. 그리고 .so 파일은 32bit로 빌드된 상태인것 같습니다..
그래서 그런지 드라이버를 직접 빌드하려고 하니까 링크시에 incompatible 오류가 발생합니다.
32bit(i386)로 이미 빌드된 .so파일을 64bit(amd64) 프로그램을 빌드할 때 링크해서 사용할 수 있는 방법이 있는지요?
Forums:
방법이 없습니다.
방법이 없습니다.
엇~, 있을 것 같은데...
nVidia의 graphic card driver는 32bit로 build 되어서 64bit Ubuntu에 설치가 되었던 것으로 기억합니다.
겉보기에는 그렇게
겉보기에는 그렇게 보일 수도 있어도, nv-kernel.o 파일 및 여러 소스 비공개된 파일이 32, 64비트 둘 다 있습니다. 엔비디아 사이트의 설치 스크립트는 단순한 셸 스크립트로, 실행하면 셸 스크립트 뒷부분에 있는 압축 파일을 풀고 설치를 진행하죠.
---- 절취선 ----
http://blog.peremen.name
그냥 실행
그냥 실행 바이너리라면 x86 라이브러리 설치하면 실행 되지만,
드라이버라서 방법이 없을 것 같네요.
emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/
https://xenosi.de/
드라이버가 아닌 경우엔 어떻게 하면 되나요?
그럼 드라이버가 아니라 일반 실행 파일인 경우는 가능한가요? 예를 들면...
이미 32bit로 빌드된 .so 파일이 있고, 이것과 링크를 해서 빌드를 해야만 하는 프로젝트가 있다고 합시다. 이 프로젝트 코드 자체는 32bit, 64bit 둘다 빌드가 가능한 상태라고 해보죠.
그리고 이 프로젝트의 최종 아웃풋은 그냥 쉘에서 실행하는 파일이고요.(드라이버 아님) 그렇다면...
1. 이 프로젝트는 64bit으로 빌드할 수 있나요?
2. 만약 64bit로 빌드할 수 없다면... 이 프로젝트를 32bit로 빌드하고, 빌드되어 나온 실행 파일이 64bit에서도 실행될 수 있도록 하는 방법은 있는지요?
1. 불가능합니다. 2.
1. 불가능합니다.
2. 32비트 크로스 컴파일러와 ia32-libs 같은 32비트 호환 라이브러리를 설치합니다.
---- 절취선 ----
http://blog.peremen.name
댓글 달기