Я являюсь новым и не знакомым с Linux ОС. Текущей ОС, которую я использую, является Ubuntu 19.10.
Я пытался создать SPPARKS (программное обеспечение https://spparks.sandia.gov/index.html), исполняемый файл “делает mpi”. Процесс не получил ошибки, но была произведена “совместно использованная библиотека” файл spk_mpi вместо “исполняемого” файла.
Я ценил бы любую справку от Вас.Большое спасибо.
Это - действительно та же проблема, как обсуждено в этих предыдущих вопросах:
и решение по существу как упоминается в
Проблема для Вашей конкретной ситуации состоит в том, как передать соответствующие опции компилятора/компоновщика через обертки компилятора MPI.
В моих 18,04 системах, с версией OpenMPI, обозначенной
$ mpicc --showme:version
mpicc: Open MPI 2.1.1 (Language: C)
и явно выбирая gcc/g ++ версия 5, я смог получить традиционный исполняемый файл некруга использование следующей командной строки (разбитый с \
продолжения строки для readibility):
OMPI_CC=gcc-5 OMPI_CXX=g++-5 \
OMPI_CFLAGS=-fno-pic OMPI_CXXFLAGS=-fno-pic OMPI_LDFLAGS=-no-pie \
make mpi
как подтверждено использование file
команда:
$ file spk_mpi
spk_mpi: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 3.2.0, BuildID[sha1]=284d76d1ca642cca833b31dfa028a7910e935600, not stripped
При использовании некоторой другой реализации MPI необходимо будет выяснить, как передать соответствующие флаги для этого.
NB необходимо будет, вероятно, работать make clean-all
сначала для удаления любых объектов, которые были ранее скомпилированы без -fno-pic
флаг.