64ビットのLINUXHPCクラスターにレガシーソフトウェア(32ビット)をインストールしようとしています。これは2005年からのかなり古いソフトウェアです。
ソフトウェアは https://www.drive5.com/pals/ にあります
OSの詳細はPRETTY_NAME="Ubuntu 18.04.2 LTS"
makeは与える:
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
以下に示すMakefileを変更して、ソフトウェアコンパイルのmakeステップが正常に完了するようにする方法について誰かがアドバイスできますか?
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)
注-質問のタイトルは「古い32ビットソフトウェアのインストール」に関するものですが、プログラムをネイティブ64ビットソフトウェアとしてビルドしない理由は特にないようです。ただし、本当にビルドする必要がある場合は、 32ビットバージョン(ベンチマーク用、または以前に公開された結果を正確に再現するため)の場合、その方法は次のとおりです。
私のシステムが64ビットのUbuntu18.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++-multilib
パッケージ(gcc-multilib
をインストールします)をインストールするだけで十分であるようです。およびlibc6-dev-x32
を依存関係として)次に、MakefileのCFLAGS
を変更して-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
Makefileから-march = pentiumpro -mcpu = pentiumproを削除しようとしましたか
それをコンパイルし、ここからのファイルを使用してここで実行し、その変更を加えました。
https://molb7621.github.io/workshop/Miscellaneous/data.html
./pals -self sample.fa and got
0 secs 1 Mb ( 0%) Reading sequence
0 secs 12 Mb ( 1%) Reading sequence done (0s).
シーケンス長3092塩基(0 Mb)、4コンティグ
....行の束全体.....
0 DPヒット、全長0経過時間0秒、ピークメモリ使用量280 M