최신 UBUNTU에 기존 32비트 소프트웨어 설치

최신 UBUNTU에 기존 32비트 소프트웨어 설치

64비트 LINUX HPC 클러스터에 레거시 소프트웨어(32비트)를 설치하려고 합니다. 2005년에 나온 꽤 오래된 소프트웨어입니다.

소프트웨어는 다음 위치에 있습니다.https://www.drive5.com/pals/

운영 체제 세부 정보는 다음과 같습니다.PRETTY_NAME="Ubuntu 18.04.2 LTS"

그래서 주어진 :

g++ -c -O3 -march=pentiumpro -mcpu=pentiumpro -funroll-loops -Winline -DNDEBUG=1  aligntraps.cpp -o aligntraps.o
g++: warning: ‘-mcpu=’ is deprecated; use ‘-mtune=’ or ‘-march=’ instead
cc1plus: error: CPU you selected does not support x86-64 instruction set
Makefile:22: recipe for target 'aligntraps.o' failed
make: *** [aligntraps.o] Error 1

내 소프트웨어 컴파일 make 단계가 성공적으로 완료되도록 Makefile(아래 표시)을 변경하는 방법을 제안할 수 있는 사람이 있습니까?

CFLAGS = -O3 -march=pentiumpro -mcpu=pentiumpro -funroll-loops -Winline -DNDEBUG=1
LDLIBS = -lm -static
# LDLIBS = -lm

OBJ = .o
EXE =

RM = rm -f
CP = cp

GPP = g++
LD = $(GPP) $(CFLAGS)
CPP = $(GPP) -c $(CFLAGS) 
CC = gcc -c $(CFLAGS) 

all: pals

CPPSRC = $(sort $(wildcard *.cpp))
CPPOBJ  = $(subst .cpp,.o,$(CPPSRC))

$(CPPOBJ): %.o: %.cpp
    $(CPP) $< -o $@

pals: $(CPPOBJ)
    $(LD) -o pals $(CPPOBJ) $(LDLIBS)

답변1

참고 - 질문 제목이 "이전 32비트 소프트웨어 설치"에 관한 것이지만 해당 프로그램을 기본 64비트 소프트웨어로 빌드하지 않을 특별한 이유는 없는 것 같습니다. 그러나 32비트 버전을 빌드해야 하는 경우(벤치마킹 목적 또는 이전에 게시된 결과를 정확하게 재현하기 위해) 다음 단계를 따르십시오.


내 시스템이 64비트 Ubuntu 18.04 및 gcc/g++ 7이라는 것은 아닙니다.

$ uname -a
Linux t400s 4.15.0-45-generic #48-Ubuntu SMP Tue Jan 29 16:28:13 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

$ g++ --version
g++ (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

이 특별한 경우, 빌드하려는 소프트웨어는 다른 라이브러리를 사용하지 않는 것으로 보입니다 libm.a.g++-multilibgcc-multiliblibc6-dev-x32CFLAGS-m32

그래서

sudo apt install g++-multilib

그 다음에

$ head -3 Makefile 
CFLAGS = -m32 -O3 -march=pentiumpro -mcpu=pentiumpro -funroll-loops -Winline -DNDEBUG=1
LDLIBS = -lm -static
# LDLIBS = -lm

$ make

몇 가지 경고를 받게 됩니다.

g++: warning: ‘-mcpu=’ is deprecated; use ‘-mtune=’ or ‘-march=’ instead

하지만 pals프로그램은 다음을 빌드해야 합니다.

$ file pals
pals: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, for GNU/Linux 3.2.0, BuildID[sha1]=1b9e369acf2aa7c6448b4132a203b8dccde16a7d, not stripped

그리고 달리다

$ ./pals

PALS v1.0
http://www.drive5.com/pals
Written by Bob Edgar and Gene Myers.
This software is donated to the public domain.
Please visit web site for requested citation.


Usage:
    pals -target <fastafile> -query <fastafile>
    pals -self <fastafile>

Options:
    -out <outfile>       (default standard output)
    -fwdonly             don't align reverse strand
    -filterout <file>    save filter hits to file

Alignment parameters can be specified in three ways:
    (1) Defaults         -length 400 -pctid 94
    (2) Specify -length <minhitlength> -pctid <minhitid>
    (3) Specify all filter and d.p. parameters:
           -wordsize     Filter word size
           -seedlength   Seed hit length
           -seeddiffs    Max #diffs in seed hit
           -length       Min length of final hit
           -pctid        Min %id of final hit
           -tubeoffset   (Optional)

For further information, please see the User Guide.

Must specify either -self or both -target and -query

답변2

Makefile에서 -march=pentiumpro -mcpu=pentiumpro를 제거해 보셨나요?

이를 컴파일하고 여기에 있는 파일과 함께 실행하여 변경합니다.

https://molb7621.github.io/workshop/Miscellaneous/data.html

./pals -self example.fa 및 가져오기

 0 secs       1 Mb (  0%) Reading sequence
 0 secs      12 Mb (  1%) Reading sequence done (0s).

시퀀스 길이 3092개 염기(0Mb), 4개 연속

...줄이 많아요...

0 DP 적중, 총 길이 0, 실행 시간 0초, 최대 메모리 사용량 280M

관련 정보