Создание исполняемого файла, но совместно использованной библиотеки появляется вместо этого

Я являюсь новым и не знакомым с Linux ОС. Текущей ОС, которую я использую, является Ubuntu 19.10.

Я пытался создать SPPARKS (программное обеспечение https://spparks.sandia.gov/index.html), исполняемый файл “делает mpi”. Процесс не получил ошибки, но была произведена “совместно использованная библиотека” файл spk_mpi вместо “исполняемого” файла.

Я ценил бы любую справку от Вас.Большое спасибо.

0
задан 13 February 2020 в 04:59

1 ответ

Это - действительно та же проблема, как обсуждено в этих предыдущих вопросах:

и решение по существу как упоминается в

Проблема для Вашей конкретной ситуации состоит в том, как передать соответствующие опции компилятора/компоновщика через обертки компилятора 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 флаг.

1
ответ дан 20 February 2020 в 22:54

Другие вопросы по тегам:

Похожие вопросы: