2011-08-03 7 views
2

우리는 오래된 Perl 응용 프로그램을 가지고 있습니다. 최근 64 비트 Ubuntu를 실행하는 새로운 서버로 이전했습니다. 이전 응용 프로그램은 pack/unpack 함수와 비트 연산을 사용하지만 비트 연산이 32 비트 대신 64 비트 정수를 반환하기 때문에 실패합니다.32 비트 모드에서 Perl을 강제 실행

perl을 32 비트 모드로 강제 전환 할 수 있습니까? 64 비트 컴퓨터에 32 비트 perl을 설치하는 방법이 있습니까?

감사합니다.

답변

1

프로세스는 32 비트 또는 64 비트입니다. 32 비트 모드에서는 64 비트 프로세스를 실행하지 않습니다. 32 비트 패키지를 설치해야합니다.

+0

그렇지 않습니다. 운영자의 행동 방식은 프로세스의 "비트 (bitness)"의 기능 일 필요는 없습니다. (그렇지만 꼭 그럴 필요는 없습니다.) – ikegami

+1

@ikegami 질문의 "32 비트 모드"부분을 32 비트 프로세스로 실행하는 것을 의미했습니다. 그러나 나는 대안적인 해석을 볼 수있다. OP가 의미하는 바가 맞을 것 같습니다. –

+0

기계는 64 비트이고 64 비트 버전의 Ubuntu를 사용합니다. 기본적으로 64 비트 Perl을 설치했습니다 (적어도 Perl은 정수를 64 비트로 처리합니다) –

3
perl을 32 비트 모드로 강제 전환 할 수 있습니까?

아니요. 올바른 (휴대 가능한) 팩/포장지 패턴을 사용하고 비트 왜곡이있는 경우 적절한 경우 & 0xFFFFFFFF을 사용할 수 있습니다.

64 비트 컴퓨터에 32 비트 perl을 설치하는 방법이 있습니까? INSTALL에서

는 :

은 기본적으로 64 비트 시스템은 -Duse64bitint도 -Duse64bitall도 필요합니다. 이 시스템에서는 기본 컴파일 모드 일 수 있으며, 현재 configure 프로세스에 use64bitall 옵션을 지정하지 않으면 32 비트 perl을 빌드 할 수 있다고 보장 할 수 없습니다. -Duse32bit * 옵션을 구현하는 것은 perl의 향후 릴리스에 예정되어 있습니다.

그래서 대답은 아마도 어쩌면 가능하지만 그렇지 않을 수도 있습니다.

+0

예, 코드를 변경할 수는 있지만 ... 응용 프로그램이 상당히 크기 때문에 코드를 변경해야하는 모든 장소를 찾는 데는 많은 시간이 걸릴 것입니다. 그리고 항상 뭔가를 놓친 다음 잡기가 어려운 버그가 발생할 수 있습니다. 그래서 간단한 대안을 찾고있었습니다. 어쩌면 일부 명령 줄 스위치 또는 일부 Perl 명령을 사용하여 Perl을 실행 중일 수 있습니다 ... 다른 것이 작동하지 않으면 소스 코드를 변경해야하지만하지 않는 것이 좋습니다. –

+1

@ user610060, 당신이 그것을 얼마나 필요로하는지는 중요하지 않습니다. 여전히 존재하지 않습니다. 유일한 옵션은 Perl의 32 비트 빌드를 사용하는 것입니다. – ikegami

1

i386과 함께 패키지 이름의 접미사로 32 비트 패키지를 설치할 수있는 것으로 보입니다. 최소한이 기능은 라이브러리를 설치할 때 유용했습니다.

$ sudo는 apt-get을 libelf1 설치 : i386을

이 아닌 라이브러리와 함께 작동하는 경우 가능성이 파일 이름과 경로 갈등이있을 것 같은 나는 모른다. 라이브러리를 사용하면 32 비트 및 64 비트 라이브러리가 별도의 디렉토리에 패키지됩니다.

관련 문제