4

バイオインフォマティクス分析のスイート全体をまとめました。( https://github.com/iontorrent/TS ) 多くの依存関係があります (アルマジロ、ブラス、ラパック、アトラスなど..)。

コンパイル時にエラーはありませんでした。問題は、作成された実行可能ファイルの一部が機能せず、他の情報なしでIllegal Instruccionをスローすることです。CentOS 5.6 で GCC 4.8.2 を使用しています。

これらの実行可能ファイルをデバッグする方法を知りたいので、システムでどのライブラリまたはコードが間違っているかを確認できます。

./tvc
tvc 4.0-7 () - Torrent Variant Caller

Illegal instruction

問題は LAPACK/BLAS/CBLAS にあると思います。LAPACK/BLAS および CBLAS をソースからビルドする方法について、非常に混乱しています。(LAPACK/BLAS の rpm バージョンは Centos 5 では古いため、このソフトウェア スイートには LAPACK 3.2.1 が必要です)。LAPACK と BLAS のコンパイル方法は知っていますが、CBLAS のインストール方法はわかりません。

ありがとうございました。

編集:

この分析スイートを提供している人たちは、Ubuntu とすべてのソフトウェアがプリインストールされた VM も提供しています。

gcc のバージョンと構成を調べました。

gcc -v Using built-in specs. Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.4.3-4ubuntu5.1'
--with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --program-suffix=-4.4 --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i486 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1)

私のGCC構成:

Configured with: ../configure --prefix=/share/apps/local/gcc/4.8.2 --with-mpfr=/share/apps/local/gcc/4.8.2 --with-gmp=/share/apps/local/gcc/4.8.2 --with-as=/share/apps/local/binutils/2.24/bin/as --enable-languages=c,c++,fortran
Thread model: posix
gcc version 4.8.2 (GCC) 
4

3 に答える 3

3

いくつかの可能性があります。しかし、それを解決するには、前述のようにデバッガーでプログラムを実行します

$ gdb ./tvc

デバッガーからプログラムを実行します。注: (gdb) はプロンプトです

(gdb) run

これにより、不正な命令がスローされます。ここから走る

(gdb) bt full

これにより、不正な命令がどこで発生したかがわかります。

于 2014-05-24T23:53:59.997 に答える
1

CPU と互換性のないコード生成用のコンパイラ設定でコンパイルした可能性があります。または、他の cpu 用に最適化されたライブラリに対してリンクします。特に、数値ライブラリには、CPU のすべての機能を使用するための特別なビルドが含まれていることがよくあります。たとえば、SSE4 命令を使用するようにビルドされたライブラリを使用しているが、CPU が少し古い場合、このエラーが発生する可能性があります。

そのため、CPU に使用できる lapack または blas の lib を注意深く読んでください。CPU用に再コンパイルする必要があるかもしれません。

于 2014-03-17T12:48:17.753 に答える
-3

「これらの実行可能ファイルをデバッグする方法を知りたいです。」

デバッガーで実行することから始めます。(これがデバッガーと呼ばれる理由です。実行可能ファイルのデバッグに役立ちます)。

プログラムが"Illegal Instruction"で失敗した場合、デバッガーは失敗した場所を表示し、その理由に関する詳細情報を提供できます。

于 2014-03-17T12:30:31.900 に答える