2012-01-27 3 views
1

우분투에는 64 비트 빌드 환경이 설치되어 있습니다. 일부 라이브러리의 소스 코드를 다운로드했으며 단일 소스 코드를 사용하여 32 비트 및 64 비트 버전을 작성하려고한다고 가정 해 보겠습니다. 다음과 같이라이브러리의 32 비트 및 64 비트 버전을 만드는 방법 (Linux)

./configure --prefix=/opt/libtvzombie --with-opengl --with-other-option1 

... 그리고 구축하고 /opt/libtvzombie에 설치 : 누군가가 성공적으로이 같은 64 비트 버전을 구성 할 수 있도록

도서관은 ./configure 스크립트와 함께 제공

make 
sudo make install 
sudo sh -c 'echo /opt/libtvzombie/lib > /etc/ld.so.conf.d/tvzombie.conf' 
sudo ldconfig 

질문은 다음과 같습니다.

  1. 평균 ./configure 스크립트가 64 비트 시스템에서 32 비트 모드로 컴파일되도록하려면 어떻게해야합니까? 나는 -m32 g ++로 컴파일 스위치를 사용할 수 있다는 것을 알고 있지만, ./configure이 64 비트 환경에서 컴파일 중임을 인식하기 때문에 autotools와는 다른 방식입니다.

  2. 어디에서이 32 비트 버전을 설치해야합니까? 어쩌면 /opt/libzombie32에?

  3. 동일한 이름을 가진 32 비트와 64 비트 버전의 라이브러리간에 이름 충돌이 없습니까?

답변

2

/opt/libzombie32에 설치하려면 --prefix =/opt/libzombie32를 지정하고 CFLAGS에서 -m32를 지정하면됩니다. 개인적으로, 나는 각 패키지에 대해 별도의 디렉토리에 설치하는 나쁜 아이디어라고 생각, 당신은 같은 일을 더 나을 것 :

 
$ sudo sh -c 'echo CFLAGS="$CFLAGS -m32" > /opt/lib32/share/config.site' 

을 그리고 --prefix =/옵션/lib32로 구성합니다. config.site에서 CFLAGS를 지정하면 --prefix =/opt/lib32로 구성된 모든 자동 도구 프로젝트는 CFLAGS에 -m32를 지정합니다. C++을 처리하기 위해 CXXFLAGS를 지정할 수도 있습니다.

+0

답장을 보내 주셔서 감사합니다. 내가 아는 한'config.site'의 옵션은 자동으로'./configure' 스크립트에 의해 선택 될 것입니다, 맞습니까? – ezpresso

+0

'--prefix =/opt/lib32' 대신'--libdir =/opt/lib32'를 쓰지 않았습니까? – ezpresso

+0

@ezpresso 예 -하지만 --prefix =/opt/lib32가있는 패키지에만 해당 –

4

configure가 -m32 플래그가 "32 비트"를 의미한다는 것을 모르기 때문에 (결국, 다른 컴파일러와 완전히 다른 의미 일 수 있습니다. 예를 들어 ia64에서도 거부 될 수 있습니다.) 호스트 유형. 호스트 유형은 프로그램이 코딩 된 경우 CC 및 CFLAGS와 독립적 인 특정 동작을 선택하는 데 사용될 수도 있습니다. --host =는 자동 감지되는 구성이 아닌 경우 실행되도록 지정해야합니다.

./configure --host=i686-linux-gnu CFLAGS="-m32" LDFLAGS="-m32" 
관련 문제