64비트 Ubuntu에서 32비트 프로그램 코드 컴파일하기(안전한 경로 찾기)

64비트 Ubuntu에서 32비트 프로그램 코드 컴파일하기(안전한 경로 찾기)

내 노트북에 처음으로 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추가 해야 합니다 . 도움이 필요한 경우 게시할 수 있습니다 . ^^-m32CXXFLAGSmakefile

처음 시도한 것은 이전 32비트 컴퓨터에서 했던 방식으로 모든 것을 간단히 설치하는 것이었습니다.

문제는 다음 컴파일 오류가 발생한다는 것입니다. /usr/bin/ld: -lgll을 검색할 때 호환되지 않는 ../../gllib-3.0b3/lib/libgll.a 건너뛰기

이로 인해 내(5세)가 64비트 응용 프로그램으로 실행되기에는 호환되지 않는 것 같다는 생각이 들었습니다.

아니면 이것을 기본 64비트로 컴파일할 수 있어야 하는지 아시나요? ^^

답변1

컴파일하려는 프로그램이 소스 코드 대신 32비트 바이너리 라이브러리를 제공한다는 것은 매우 이상하지만 분명히 이 라이브러리를 찾을 수 있습니다.여기, 그리고 이를 컴파일하면 이 프로그램을 64비트용으로 컴파일하는 데 사용할 수 있는 64비트 libgll을 얻게 됩니다.

관련 정보