On Thu, 7 Feb 2013, Dmitrii Kashin wrote:
Я, кажется, понял, в чем дело. Все эти функции я обнаружил в
соответствующий файлах программы, которую пытаюсь скомпилировать. =)
Я наивно пытался подать на вход только один файл, а их там без малого
сотня. Надо, стало быть, из каждого объектник сделать, а потом
слинковать. Ну или подключить их директивой include в главном файле.
С include это не самая удачная идея.
Лучше написать Makefile, что бы он эту программу вам собирал.
Если никогда с make не работали, посмотрите
http://www.osp.ru/os/1993/03/178469/
как раз для начинающих. Полная документация по make в пакете make-doc.
В приложении болванка под Makefile, что бы легче было
стартовать. Впишите список своих файлов. FFLAGS - то что
ваши скрипты определяют как FFLAGS.
Вместо EXTLIBS поставьте LINK_FNL_STATIC.
(Я ориентируюсь на вашу строку $FC $FFLAGS solver3.for $LINK_FNL_STATIC )
p.s. Из любопытства спрашиваю. Фортрановская библиотека - это
существенно? Нельзя, скажем, GSL приспособить? Или там просто
нет того, что требуется?
Существенно то, что программа написана не мной, а также то, что ни с
IMSL, ни с GSL я раньше не работал. Все, что я на данный момент пытаюсь
сделать - это заставить работать то, что уже есть, и переписывать
программу только ради свободной библиотеки я бы не хотел, ибо она
огромна и плохо комментирована.
Ситуация понятная. Заставить чужую программу работать - задача
благородная, но неблагодарная. Действительно, тогда лучше
пользоваться тем что есть.
Успехов.
Ю.
PROGRAM := galuga.exe
# --------------------------------------------------------------------
# compiler options
#
FC := ifort
FFLAGS := -g
# --------------------------------------------------------------------
# links options and libraries
#
LINK := ifort
EXTLIBS := $(shell cernlib packlib)
# --------------------------------------------------------------------
# list of files
#
SRCS := ranlux.f vegas.f galuga2.f
MAIN := demo_my.f
OBJS := $(SRCS:.f=.o)
OBJS += $(MAIN:.f=.o)
# --------------------------------------------------------------------
all : $(PROGRAM)
$(PROGRAM) : $(OBJS)
$(LINK) -o $(PROGRAM) $(OBJS) $(EXTLIBS)
@echo "done"
clean:
@rm -f *.o $(PROGRAM) core *~