2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Компиляция с утилитой make
Сообщение21.07.2014, 18:38 
Аватара пользователя
Получил задание откомпилировать исходные файлы программ, написанные на Фортране, чтобы получить готовые исполняемые файлы приложения. "Засада" в том, что необходимо использовать некую утилиту make, которая запустит Makefile, находящийся в одной директории с исходными кодами. Я уже кажется догадываюсь, что утилита make относится к среде Unix/Linux, в которой я никогда не работал...В Windows, разумеется, команда make не работает (насколько я понимаю). :facepalm:
Может есть у кого идеи насчет того, как не лезть в дебри другой операционной системы, а грамотно и без лишнего геморроя все проделать в Windows?

 
 
 
 Re: Компиляция с утилитой make
Сообщение21.07.2014, 19:06 
Аватара пользователя
zen pilgrim
Обычно, утилита make поставляется с компилятором. С любым компилятором не только фортра, но и Си, паскаль и др. И к Linux не имеет прямого отношения. И от компилятора к компилятору несколько разнится. Можете поискать в интернете make.exe скачать.

 
 
 
 Re: Компиляция с утилитой make
Сообщение21.07.2014, 19:49 
Аватара пользователя
Pavia

Спасибо, попробую!

 
 
 
 Re: Компиляция с утилитой make
Сообщение21.07.2014, 20:00 
1. Если у Вас есть компилятор фортрана, то с ним может поставляться утилита make, gmake и т.п.
2. Если Вы работаете в Windows, то попробуйте утилиту nmake из Visual Studio.

 
 
 
 Re: Компиляция с утилитой make
Сообщение21.07.2014, 20:44 
Аватара пользователя
Yuri Gendelman
Спасибо, Yuri!

Работаю, разумеется, в Visual Studio. А не подскажите, как правильно прописать эту команду?

 
 
 
 Re: Компиляция с утилитой make
Сообщение21.07.2014, 22:28 
Аватара пользователя
К ней надо написать makefile, причём конкретные детали - надо выяснять в документации к той конкретной утилите, которую вы раздобыли.

Причём желательно сначала вообще понять идеологию make в общих чертах.

 
 
 
 Re: Компиляция с утилитой make
Сообщение21.07.2014, 23:16 
zen pilgrim, а выложите Makefile посмотреть. Может он настолько простой, что с лёгкостью заменится правильным студийным проектом...

 
 
 
 Re: Компиляция с утилитой make
Сообщение22.07.2014, 00:26 
Аватара пользователя
Munin

Да, я вот как раз пытаюсь с этим разобраться...Makefile есть уже готовый:

warlock66613

Извиняюсь за слишком длинную "простыню" - не знаю как скрыть часть текста :-(


Код:
###################################################################################
#
#   make all
#      Compile program in the current directory. Optionally, one
#      can specify the parameters F95="my compiler" and
#      F95FLAGS="my compiler flags". The default is to use "f95".
#
#   make all2
#      Variant of make all: LAPACK subroutine names have
#      an underscore appended to them in the source files in order to
#      use FFTW and LAPACK   libraries with conflicting underscore
#      conventions.
#
#   make all3
#      Variant of make all: FFTW subroutine names have
#      an underscore appended to them in the source files in order to
#      use FFTW and LAPACK   libraries with conflicting underscore
#      conventions.
#
#   make install
#      To be run after successfully making "all". Move the entire
#      directory to usr/local/SHTOOLS2.x. Generally requires root priviledges.
#
#   make clean
#      Remove the compile lib, module, and object files.
#
#   make examples
#      Compile example programs. Optionally, one
#      can specify the parameters F95="my compiler" and
#      F95FLAGS="my compiler flags", which should be identical to
#      those used to make "all".
#
#   make remove-examples
#      Delete compiled example programs.
#
#   make run-examples
#      Run all examples programs.
#
#   make doc
#      Create the man and html-man pages from input POD files.
#      These are PRE-MADE in the distribution, so it shouldn't
#      be necessary to recreate these unless there is some kind
#      of problem.
#
#   make remove-doc
#      Remove the man and html-man pages.
#
#
#   Written by Mark Wieczorek (July 2012).
#
#####################################################################################

VERSION = 2.8

F95 = f95

SHELL=/bin/tcsh
MAKE = make
DOCDIR = src/doc
SRCDIR = src
EXDIR = examples


.PHONY: all all2 all3 install doc remove-doc clean getflags examples remove-examples run-examples
   
all: getflags
   $(MAKE) -C $(SRCDIR) -f Makefile all VERSION=$(VERSION) F95=$(F95) F95FLAGS="$(F95FLAGS)"
   @echo
   @echo MAKE SUCCESSFUL!
   @echo   
   @echo ---------------------------------------------------------------------------------------------------
   @echo Compile your code with the following flags:
   @echo
   @echo $(F95) $(MODFLAG) $(F95FLAGS) -Llibpath -lSHTOOLS$(VERSION) -lfftw3 -lm -O3 -s -m64
   @echo
   @echo where modpath and libpath are replaced with their respective paths.
   @echo ---------------------------------------------------------------------------------------------------
   @echo

all2: getflags
   $(MAKE) -C $(SRCDIR) -f Makefile all2 VERSION=$(VERSION) F95=$(F95) F95FLAGS="$(F95FLAGS)"
   @echo
   @echo MAKE SUCCESSFUL!
   @echo
   @echo ---------------------------------------------------------------------------------------------------
   @echo Compile your code with the following flags:
   @echo
   @echo $(F95) $(MODFLAG) $(F95FLAGS) -Llibpath -lSHTOOLS$(VERSION) -lfftw3 -lm -O3 -s -m64
   @echo
   @echo where modpath and libpath are replaced with their respective paths.
   @echo ---------------------------------------------------------------------------------------------------
   @echo
   
all3: getflags
   $(MAKE) -C $(SRCDIR) -f Makefile all3 VERSION=$(VERSION) F95=$(F95) F95FLAGS="$(F95FLAGS)"
   @echo
   @echo MAKE SUCCESSFUL!
   @echo   
   @echo ---------------------------------------------------------------------------------------------------
   @echo Compile your code with the following flags:
   @echo
   @echo $(F95) $(MODFLAG) $(F95FLAGS) -Llibpath -lSHTOOLS$(VERSION) -lfftw3 -lm -O3 -s -m64
   @echo
   @echo where modpath and libpath are replaced with their respective paths.
   @echo ---------------------------------------------------------------------------------------------------
   @echo
   
getflags:
ifeq ($(F95),f95)
# Default Absoft Pro Fortran flags
F95FLAGS ?= -m64 -O3 -YEXT_NAMES=LCS -YEXT_SFX=_
MODFLAG = -p modpath
endif

ifeq ($(F95),g95)
# Default g95 flags.
F95FLAGS ?= -m64 -O3 -fno-second-underscore
MODFLAG = -Imodpath
endif

ifeq ($(F95),gfortran)
# Default gfortran flags
F95FLAGS ?= -m64 -O3
MODFLAG = -Imodpath
endif

ifeq ($(F95),ifort)
# Default intel fortran flags
F95FLAGS ?= -m64 -free -O3 -Tf
MODFLAG = -Imodpath
endif

ifeq ($(origin F95FLAGS), undefined)
F95FLAGS = -m64 -O3
MODFLAG = -Imodpath
endif


install:
   @cp -R ../SHTOOLS /usr/local/SHTOOLS$(VERSION)/
   @echo
   @echo ENTIRE DIRECTORY MOVED TO /usr/local/SHTOOLS$(VERSION)
   

doc:
   $(MAKE) -C $(DOCDIR) -f Makefile VERSION=$(VERSION)
   @echo DOCUMENTATION SUCCESSFULLY CREATED


remove-doc:
   @rm -f man/man1/*.1
   @rm -f www/man/*.html
   @echo
   @echo REMOVED MAN AND HTML-MAN FILES
   

clean:
   $(MAKE) -C $(SRCDIR) -f Makefile VERSION=$(VERSION) clean
   @echo
   @echo REMOVED LIB, MODULE, AND OBJECT FILES

   
examples: getflags
   $(MAKE) -C $(EXDIR) -f Makefile all VERSION=$(VERSION) F95=$(F95) F95FLAGS="$(F95FLAGS)"
   @echo
   @echo MAKE OF EXAMPLES SUCCESSFUL

remove-examples:
   $(MAKE) -C $(EXDIR) -f Makefile clean
   @echo
   @echo REMOVED EXAMPLE EXECUTABLES

run-examples:
   $(MAKE) -C $(EXDIR) -f Makefile run-examples
   @echo
   @echo RAN ALL EXAMPLE PROGRAMS

 
 
 
 Re: Компиляция с утилитой make
Сообщение22.07.2014, 00:39 
zen pilgrim, если вы поизучаете этот файл, то найдёте там такую строчку:
Код:
$(MAKE) -C $(SRCDIR) -f Makefile all VERSION=$(VERSION) F95=$(F95) F95FLAGS="$(F95FLAGS)"
Она вызывает дочерний процесс make на файле Makefile в подкаталоге SRCDIR = src. Так что всё самое интересное в этом, вложенном Makefile.

Вообще, я думаю, что вам можно просто взять, создать фортран-проект в студии (я так понял, это вы делать умеете), включить в него все файлы из подкаталога src, и затем попробовать скомпилировать.

 
 
 
 Re: Компиляция с утилитой make
Сообщение22.07.2014, 00:53 
Аватара пользователя
zen pilgrim в сообщении #889330 писал(а):
Извиняюсь за слишком длинную "простыню" - не знаю как скрыть часть текста :-(

Для этого есть тег "подсветка синтаксиса" [ syntax lang="make" ][/ syntax ]. Лучше отредактируйте своё сообщение, если ещё успеете.

-- 22.07.2014 01:56:55 --

warlock66613 в сообщении #889337 писал(а):
Вообще, я думаю, что вам можно просто взять, создать фортран-проект в студии (я так понял, это вы делать умеете), включить в него все файлы из подкаталога src, и затем попробовать скомпилировать.

Поскольку похоже, что это makefile не какого-то самодельного проекта, а библиотеки LAPACK, то лучше поискать дистрибутивы этой библиотеки под Windows, или HOWTO как инсталлировать.

 
 
 
 Re: Компиляция с утилитой make
Сообщение22.07.2014, 01:03 
Munin в сообщении #889344 писал(а):
лучше поискать дистрибутивы этой библиотеки под Windows, или HOWTO как инсталлировать.
Сходу нашлось вот это: Easy Windows Build. Build Instructions for LAPACK 3.5.0 for Windows with Visual Studio.

 
 
 
 Re: Компиляция с утилитой make
Сообщение22.07.2014, 12:03 
Аватара пользователя
Munin

warlock66613

Спасибо большое!))

 
 
 [ Сообщений: 12 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group