.png)
내 노트북에 처음으로 64비트 Ubuntu를 설치했습니다. 이제 나는 이 OS에서 나의 오래된 생물학 C++ 프로젝트를 컴파일하는 방법을 찾고 있습니다. 새로 설치된 32비트 Ubuntu에서 프로젝트를 컴파일하는 데 필요한 모든 패키지를 설치하는 .sh 파일이 있습니다. 이 파일의 내용은 다음과 같습니다.
#!/bin/sh
apt-get update # To get the latest package lists
apt-get install build-essential -y
apt-get install freeglut3-dev -y
apt-get install libsdl1.2-dev -y
apt-get install libsdl-image1.2-dev -y
apt-get install libsdl-mixer1.2-dev -y
apt-get install libopenscenegraph-dev -y
이제 문제는 64비트 Ubuntu에 해당 패키지를 설치하고 해당 Makefile을 사용하여 프로젝트를 컴파일하려고 하면 다음과 같은 오류 메시지가 표시된다는 것입니다.
/usr/bin/ld: skipping incompatible ../../gllib-3.0b3/lib/libgll.a when searching for -lgll
/usr/bin/ld: cannot find -lgll
확인한 결과 이제 파일이 아키텍처 libgll.a
용으로 컴파일되었음을 알 수 있습니다. elf33-i386
이 파일을 64비트 아키텍처용으로 다시 컴파일하는 방법을 모르기 때문에 전체 프로젝트를 32비트 아키텍처에서 컴파일해야 한다고 확신합니다.
간단히 말해서, 지금 내 질문은 이 프로젝트를 32비트 애플리케이션으로 컴파일하고 64비트 Ubuntu에서 실행하려면 어떻게 해야 합니까?입니다.
내 생각엔 명령을 사용한 dpkg --add-architecture i386
다음 관심 있는 패키지를 수동으로 설치해야 할 것 같습니다 apt-get install <package-name>:i386
. 이 방법의 문제점은 패키지 apt-get install libsdl1.2-dev:i386
를 제거해야 한다는 것입니다 build-essential
.
물론 마지막으로 내 를 수정 하고 (및 다른 줄?) makefile
추가 해야 합니다 . 도움이 필요한 경우 게시할 수 있습니다 . ^^-m32
CXXFLAGS
makefile
처음 시도한 것은 이전 32비트 컴퓨터에서 했던 방식으로 모든 것을 간단히 설치하는 것이었습니다.
문제는 다음 컴파일 오류가 발생한다는 것입니다. /usr/bin/ld: -lgll을 검색할 때 호환되지 않는 ../../gllib-3.0b3/lib/libgll.a 건너뛰기
이로 인해 내(5세)가 64비트 응용 프로그램으로 실행되기에는 호환되지 않는 것 같다는 생각이 들었습니다.
아니면 이것을 기본 64비트로 컴파일할 수 있어야 하는지 아시나요? ^^
답변1
컴파일하려는 프로그램이 소스 코드 대신 32비트 바이너리 라이브러리를 제공한다는 것은 매우 이상하지만 분명히 이 라이브러리를 찾을 수 있습니다.여기, 그리고 이를 컴파일하면 이 프로그램을 64비트용으로 컴파일하는 데 사용할 수 있는 64비트 libgll을 얻게 됩니다.