Я собрал целый комплект анализа биоинформатики. (https://github.com/iontorrent/TS)
У него много зависимостей (броненосец, блас, лапак, атлас и т. Д.).
При компиляции у меня не было ошибок. Проблема в том, что некоторые из созданных исполняемых файлов не работают и выдают Незаконный инструктион без какой-либо другой информации. Я использую GCC 4.8.2 на CentOS 5.6.
Я хотел бы знать, как я могу отладить эти исполняемые файлы, чтобы я мог проверить, какая из библиотек или код неверен в моей системе.
./tvc
tvc 4.0-7 () - Torrent Variant Caller
Illegal instruction
Я думаю, что проблема с LAPACK / BLAS / CBLAS.
Я очень запутался в том, как создавать LAPACK / BLAS и CBLAS из исходного кода. (rpm-версия LAPACK / BLAS устарела в Centos 5, для этого программного пакета требуется LAPACK 3.2.1).
Я знаю, как скомпилировать LAPACK и BLAS, я понятия не имею, как установить CBLAS.
Спасибо.
Отредактировано:
Ребята, предоставляющие этот аналитический пакет, также предоставляют виртуальную машину с предустановленной Ubuntu и всем программным обеспечением.
Я посмотрел их версию и конфигурацию 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)
Есть несколько возможностей; но чтобы решить это, запустите программу в отладчике, как указано
$ gdb ./tvc
из отладчика запустите программу. Примечание: (GDB) является подсказка
(gdb) run
Это должно бросить незаконную инструкцию; отсюда беги
(gdb) bt full
Это скажет вам, где произошла незаконная инструкция.
возможно, вы скомпилировали его с настройками компилятора для генерации кода, который не совместим с вашим процессором. или вы ссылаетесь на какую-то библиотеку, оптимизированную для других процессоров.
Особенно числовые библиотеки часто имеют специальные сборки для использования всех возможностей процессора. Например, если вы используете библиотеку, созданную для использования инструкций SSE4, но ваш процессор немного старше, он может выдать эту ошибку.
Так что внимательно прочитайте, какую библиотеку lapack или blas вы можете использовать для своего процессора. Может быть, вам придется перекомпилировать его для вашего процессора.
«Я хотел бы знать, как я могу отладить эти исполняемые файлы»
Начните с запуска его в отладчике. (вот почему это называется отладчик; это помогает тебе отлаживать исполняемые файлы).
Когда программа не работает с «Незаконная инструкция», отладчик сможет показать вам, где произошла ошибка, и предоставить дополнительную информацию о причинах.