2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Компиляция с утилитой make
Сообщение21.07.2014, 18:38 
Аватара пользователя


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

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


31/10/08
1244
zen pilgrim
Обычно, утилита make поставляется с компилятором. С любым компилятором не только фортра, но и Си, паскаль и др. И к Linux не имеет прямого отношения. И от компилятора к компилятору несколько разнится. Можете поискать в интернете make.exe скачать.

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


10/07/12
25
Москва
Pavia

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

 Профиль  
                  
 
 Re: Компиляция с утилитой make
Сообщение21.07.2014, 20:00 
Заслуженный участник


15/05/05
3445
USA
1. Если у Вас есть компилятор фортрана, то с ним может поставляться утилита make, gmake и т.п.
2. Если Вы работаете в Windows, то попробуйте утилиту nmake из Visual Studio.

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


10/07/12
25
Москва
Yuri Gendelman
Спасибо, Yuri!

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

 Профиль  
                  
 
 Re: Компиляция с утилитой make
Сообщение21.07.2014, 22:28 
Заслуженный участник
Аватара пользователя


30/01/06
72407
К ней надо написать makefile, причём конкретные детали - надо выяснять в документации к той конкретной утилите, которую вы раздобыли.

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

 Профиль  
                  
 
 Re: Компиляция с утилитой make
Сообщение21.07.2014, 23:16 
Заслуженный участник


02/08/11
7003
zen pilgrim, а выложите Makefile посмотреть. Может он настолько простой, что с лёгкостью заменится правильным студийным проектом...

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


10/07/12
25
Москва
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 
Заслуженный участник


02/08/11
7003
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 
Заслуженный участник
Аватара пользователя


30/01/06
72407
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 
Заслуженный участник


02/08/11
7003
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 
Аватара пользователя


10/07/12
25
Москва
Munin

warlock66613

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group