При попытке сборки программы написанной на С и предназначенной для расчетов по методу молекулярной динамики выдается сообщение
/usr/bin/ld: cannot find - lmpi
Сборка производилась под Fedora Core 5
Ранее под Debian проблем со сборкой не было. Подскажите пожалуйста как с этим бороться? Я понимаю, что не хватает какой то библиотеки, но вопрос в том где ее взять?
где взять -lmpi ? (проблема со сборкой программы)
Модератор: Bizdelnick
-
aLexx programmer
- Сообщения: 985
- Статус: Турук-Макто
- ОС: Gentoo -> Ubuntu
Re: где взять -lmpi ?
Набрав в гугле "-lmpi" и пройдя по третьей ссылке, я попал на страницу, откуда можно это чудо скачать. Пробовали?
-
Andrjuha
- Сообщения: 3
Re: где взять -lmpi ?
aLexx programmer писал(а): ↑08.08.2006 21:38Набрав в гугле "-lmpi" и пройдя по третьей ссылке, я попал на страницу, откуда можно это чудо скачать. Пробовали?
Пробовали, это не оно. Здесь слово Library не в том смысле использовано. То что находиться по третьей ссылке - это, как я понял, некая программа для мониторинга и анализа работы программ для параллельных вычислений и оно само требует для своей работы какую то стандартную liblmpi.a.
Собственно в надежде, что нужная библиотека обнаружится в одном из пакетов для многопроцессорных вычислений я пробовал установть пакеты mpich и openmpi, но это тоже не помогло.
-
Bolverk
- Бывший модератор
- Сообщения: 1571
- ОС: Cygwin
-
Andrjuha
- Сообщения: 3
Re: где взять -lmpi ?
Вот devel и правда помог, но не до конца, теперь ошибка выглядит таким образом:
angle_charmm.cpp:(.text+0x9d3): undefined reference to `MPI_Bcast(void*, int, int, int, int)'
.........................................................
много-много подобных строчек
.........................................................
collect2: ld returned 1 exit status
Есть предположение, что нужно сделать какие-то поправки в make-файле, который выглядит следующим образом:
SHELL = /bin/sh
CC = g++
CCFLAGS = -O -I../STUBS -DFFT_NONE
DEPFLAGS = -M
LINK = g++
LINKFLAGS = -O -L../STUBS
USRLIB = -lmpi
SYSLIB =
ARCHIVE = ar
ARFLAGS = -rc
SIZE = size
# Link target
$(EXE): $(OBJ)
$(LINK) $(LINKFLAGS) $(OBJ) $(USRLIB) $(SYSLIB) -o $(EXE)
$(SIZE) $(EXE)
# Library target
lib: $(OBJ)
$(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ)
# Compilation rules
%.o:%.cpp
$(CC) $(CCFLAGS) -c $<
%.d:%.cpp
$(CC) $(CCFLAGS) $(DEPFLAGS) $< > $@
# Individual dependencies
DEPENDS = $(OBJ:.o=.d)
include $(DEPENDS)
может кто в курсе в чем эдесь проблема?
-
Bolverk
- Бывший модератор
- Сообщения: 1571
- ОС: Cygwin
Re: где взять -lmpi ?
Makefile тут абсолютно не причём
что-то в исходниках ссылается на функцию MPI_Bcast(void*, int, int, int, int), которой нет в библиотеке
так что проверяй версии библиотек, они либо слишком старые, либо слишком новые
что-то в исходниках ссылается на функцию MPI_Bcast(void*, int, int, int, int), которой нет в библиотеке
так что проверяй версии библиотек, они либо слишком старые, либо слишком новые