Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование »      makefile для Linux пойдет под Windows? (очень срочно)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

mclaudt



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Товарищи, есть Makefile для компиляции программы на FORTRAN, напичканный командами для Linux (только ли для?) типа такого:

Код:
aclocal.m4: $(M4_FILES)
    cat $(M4_FILES)  > aclocal.m4
dep:  
    sfmakedepend --depend=obj --modext=o *.f *.f90 *.F *.F90
#
include arch.make
#
# Uncomment the following line for debugging support
#
#FFLAGS=$(FFLAGS_DEBUG)

Под линукс он компилится на ура.
 
Вопрос — как проект можно скомпилить под  Windows и что для этого нужно сделать (в общих чертах)?
 
Если считать что программа не использует специфичных для Linux библиотек.
Очень прошу ответить.

Всего записей: 23 | Зарегистр. 28-11-2007 | Отправлено: 15:28 28-09-2008
karakurt2



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Эти команды не выполняют компиляцию фортрановского кода. Они служат для обновления зависимостей правил, записанных в make-файле. Для полноценной работы с UNIX-дистрибутивами посмотрите продукты SUA или Cygwin. В простейшем случае можно обойтись без установки большого количества утилит в стиле UNIX, используя компиляцию из командной строки, например
 
ifort source.for

Всего записей: 737 | Зарегистр. 06-12-2003 | Отправлено: 16:25 28-09-2008
mclaudt



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо, karakurt2.
 
То есть существует вероятность, что этот файл не завязан на конкретной опеарционной системе, раз это просто инструкции компилятору переназначить зависимости от библиотек (в моем случае это библиотека MPI, она существует как под Linux так и под  Windows)
Тогда наверняка существует какой-нибудь конвертер этих make-файлов для Windows и нет необходимости запускать эмулятор UNIX-машины типа Cygwin. Или все же вероятность накой непривязанности к оси очень мала и простым конвертером не отделаться?
Был ли у кого-нибудь подобный опыт?

Всего записей: 23 | Зарегистр. 28-11-2007 | Отправлено: 16:43 28-09-2008 | Исправлено: mclaudt, 16:44 28-09-2008
karakurt2



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мне не знакомы некоммерческие библиотеки, которые реализуют MPI. О программах преобразования тоже не слышал, я пишу make-файлы вручную. Если make-файл небольшой, то опубликуйте его здесь и укажите, каким компилятором Fortran вы пользуетесь. Поможем.

Всего записей: 737 | Зарегистр. 06-12-2003 | Отправлено: 17:03 28-09-2008
mclaudt



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На кафедре есть лицензионный MS MPI. Cygwin-а хочу избежать, так как думаю что он не потянет 40-ядерный кластер, на который и планируется взгромоздить прогу...
 
Makefile там увы огромный. Но я присмотрелся — в нем одна косметика для всяких  make clean. И все библиотеки которые в нем упоминаются — это MPI, и основанные на нем всякие BLACS, SCALAPACK, а также LAPACK (их похоже тоже компилить отдельно придется)
Вижу решением вручную заменить все команды в makefile их аналогами для виндовой среды разработки, а упоминания библиотек — также windows-аналогами.
 
Это не будет заведомо неподъемным занятием? )

Всего записей: 23 | Зарегистр. 28-11-2007 | Отправлено: 18:22 28-09-2008 | Исправлено: mclaudt, 21:36 28-09-2008
vjunk

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
По моему, бегать от cygwin смысла нет, он ещё не раз может пригодиться. Если использовать оттуда только утилиты для сборки (make и прочее unix окружение), а компиляторы родные для виндовс, то получившаяся программа никак с cygwin связана не будет. кроме того, cygwin это не виртулаьная машина, а библиотека, транслирующая вызовы posix в win32 api и её влияние на производительность программ минимально.
 
Или вы хотите саму сборку по узлам кластера раскидать, а не прогон программы?

Всего записей: 303 | Зарегистр. 23-02-2005 | Отправлено: 21:03 29-09-2008
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня вопрос обратный (не совсем): вот собрал тестовую программу под Windows, со стандартной библиотекой C для компилятора Intel, который и под Linux есть. Теперь хочу тот же самый код откомпилировать под Linux (RHEL 5.2). Поскольку опыта в составлении makefile нет, а времени на изучение всех аспектов мало, решил спросить, каким должен быть простейший makefile в моём случае? Хотелось бы именно простейший пример, не затуманенный множеством переменных (их я обязательно буду пользовать, но это когда базис освою). Из заголовочных файлов имеются вот эти:
Код:
#include <stdio.h>
#include <malloc.h>
#include <math.h>  
 
1. Какие указывать библиотеки для их линковки? 2. Как линковать другие библиотеки (от тех же Intel, назовём, к примеру, somelib.a, объявлен в somedefs.h)? Повторюсь, интересует именно простой (уж усложнить потом -- не проблема)) пример, в стиле:
Код:
edit : main.o kbd.o command.o display.o \
            insert.o search.o files.o utils.o
             cc -o edit main.o kbd.o command.o display.o \
                        insert.o search.o files.o utils.o
     
     main.o : main.c defs.h
             cc -c main.c
     kbd.o : kbd.c defs.h command.h
             cc -c kbd.c
     command.o : command.c defs.h command.h
             cc -c command.c
     display.o : display.c defs.h buffer.h
             cc -c display.c
     insert.o : insert.c defs.h buffer.h
             cc -c insert.c
     search.o : search.c defs.h buffer.h
             cc -c search.c
     files.o : files.c defs.h buffer.h command.h
             cc -c files.c
     utils.o : utils.c defs.h
             cc -c utils.c
     clean :
             rm edit main.o kbd.o command.o display.o \
                insert.o search.o files.o utils.o
 
Спасибо!

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3659 | Зарегистр. 08-02-2003 | Отправлено: 10:35 27-02-2009
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert
1) у интела /samples есть, возьми оттуда и адаптируй;
 
2) для отделно взятых мейков я в VS свой проект завожу и всё нужное туда вписываю...
потом тоже ручками доделываю
 
-----
а проект-то большой? может мейка и не надо совсем, командной строки хватит
и, по-моему, для
Цитата:
со стандартной библиотекой C
вообще ничего не надо специально оговаривать, только свои зависимости прописать...

Всего записей: 25734 | Зарегистр. 06-12-2002 | Отправлено: 16:13 27-02-2009 | Исправлено: akaGM, 16:20 27-02-2009
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
Цитата:
1) у интела /samples есть, возьми оттуда и адаптируй;
Ну, большинство знаний у меня обычно от изучения исходников). Но исходники как раз makefile'ов можно разбирать бесконечно(. Нужен именно простейший пример -- помнишь, типа "Hello, world!"?  
 

Цитата:
...а проект-то большой?
Да вроде выше писал -- это пока тестовый пример, чтобы обкатать среду, так скажем, и прочувствовать MKL. То есть, написал простейшую программу обращения матрицы с помощью этой библиотеки. Под Windows пашет. Вот и под Linux хочу отладить, а потом продолжить дальнейшие тесты
Цитата:
...может мейка и не надо совсем, командной строки хватит
Давай, сойдёт, усложнить потом не проблема
 

Цитата:
...вообще ничего не надо специально оговаривать, только свои зависимости прописать...
Пример? У меня только три указанные выше стандартные библиотеки
 
Спасибо

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3659 | Зарегистр. 08-02-2003 | Отправлено: 16:59 27-02-2009
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert
ком строка вроде этой:
ic my_main.c my_funcs.c -lmkl_core #тут я не знаю какие mkl ещё нужны
 
простейший мак для двух .с и трёх инклудов

Код:
 
CFLAGS=
LIBDIR=/opt/intel/mkl/lib
MKL_LIBS= $(LIBDIR)/libmkl_lapack.a $(LIBDIR)/libmkl_solver.a #--- здесь добавляй либы...
 
my_main : my_main.o my_funcs.o
  ic $(CFLAGS) -o my_main my_main.o -i-static my_funcs.o  -Wl,--start-group $(MKL_LIBS) -Wl,--end-group
 
my_main.o : my_main.c my_main.h
  ic -c $(CFLAGS) my_main.c
 
my_funcs.o : my_funcs.c my_funcs.h my_func.txt
#my_func.txt -- для изврата, вдруг ты самодокументированные пишешь
  ic -c $(CFLAGS) my_funcs.c
 

Всего записей: 25734 | Зарегистр. 06-12-2002 | Отправлено: 17:30 27-02-2009 | Исправлено: akaGM, 18:09 27-02-2009
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM  
Пасиб большое, ща попробую). Кстати, когда под Windows отлаживал программу (тестовый пример -- обращение матрицы 144x144 с большим числом обусловленности), заметил странности насчёт точности (я пока не поигрался с ключами компилятора насчёт вещественных чисел с плавающей запятой). То есть, сравнивал результаты обращения в Maple и своей программы. Элементы матрицы примерно до 10^-18, нижняя граница по модулю (ну и обратные к таким элементам). Интересно, без дополнительных ключей компилятора не обойтись с величинами типа double? Впрочем, доложусь об этом в теме про данный компилятор. Ещё раз спасибо!

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3659 | Зарегистр. 08-02-2003 | Отправлено: 17:43 27-02-2009
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert

Цитата:
Интересно, без дополнительных ключей компилятора не обойтись с величинами типа double?

не понял вопрос?

Всего записей: 25734 | Зарегистр. 06-12-2002 | Отправлено: 18:36 27-02-2009
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
Цитата:
не понял вопрос?
В руководстве "Intel® C++ Compiler User and Reference Guides" есть пункт "Floating-point Options Quick Reference", касательно точности вычислений. Но лучше это обсудить по теме компилятора, я поиграюсь с ключами и доложусь там. Спрашивал, вдруг ты уже это проходил

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3659 | Зарегистр. 08-02-2003 | Отправлено: 18:58 27-02-2009
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert

Цитата:
вдруг ты уже это проходил

что-то я сегодня не в себе...
ЧТО именно проходил?

Всего записей: 25734 | Зарегистр. 06-12-2002 | Отправлено: 19:22 27-02-2009
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
Цитата:
что-то я сегодня не в себе...
Однако, тяпница)
Цитата:
ЧТО именно проходил
Имею в виду, сталкивался с подобными вопросами

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3659 | Зарегистр. 08-02-2003 | Отправлено: 20:01 27-02-2009
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert

Цитата:
Имею в виду, сталкивался с подобными вопросами

с какими?!
использование double? да, сталкивался, да, использую...
только в каком контексте?

Всего записей: 25734 | Зарегистр. 06-12-2002 | Отправлено: 20:09 27-02-2009
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
Цитата:
использование double?
Ну блин, такой примитивный вопрос я бы не задавал(
Цитата:
...только в каком контексте?
Да вроде же понятно выразился -- мне показались немного странными результаты расчёта, стал копать -- и обнаружил наличие специальных ключей компилятора на этот счёт. Вот в чём вопрос -- конкретизирую -- приходилось ли тебе с этими ключами манипулировать? Вот к примеру пара ключей:
Код:
/Qprec-div
 
Attempts to use slower but more accurate implementation of floating-point divide. Use this option to disable the divide optimizations in cases where it is important to maintain the full range and precision for floating-point division. Using this option results in greater accuracy with some loss of performance.
 
Specifying -no-prec-div (Linux and Mac OS X) or /Qprec-div- (Windows) enables optimizations that result in slightly less precise results than full IEEE division
 
/Qlong-double
 
Changes the default size of the long double data type
Эх, офтопим мы тут немного)

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3659 | Зарегистр. 08-02-2003 | Отправлено: 20:24 27-02-2009
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert
на таком уровне -- нет...
единственные грабли -- это SSE на каком-то не очень свежем Атлоне
всегда хватало даблов, т.к. обычно строю мат.-модель, в кот. параметры имеют значение в диапазоне 1..10, если что, то показатели таскаю отдельно, т.е. обычно перенормирую...
твои 10^-18 -- уже не дабл, в смысле значащих цифр...

Цитата:
Эх, офтопим мы тут немного

ну переходи к нам в фортран или заводи отельный топ...

Всего записей: 25734 | Зарегистр. 06-12-2002 | Отправлено: 20:42 27-02-2009
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
Цитата:
...ну переходи к нам в фортран или заводи отельный топ...
Тема-то уже есть, я говорил об этом, так что ответил там А с FORTRAN, видимо, тоже придётся повозиться, так что и там буду, даст Бог)

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3659 | Зарегистр. 08-02-2003 | Отправлено: 21:03 27-02-2009
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всё, akaGM, большое спасибо ещё раз за отзывчивость и за
Цитата:
ком строка вроде этой:  
ic my_main.c my_funcs.c -lmkl_core #тут я не знаю какие mkl ещё нужны  
 
простейший мак для двух .с и трёх инклудов  
 
Код:  
CFLAGS=  
LIBDIR=/opt/intel/mkl/lib  
MKL_LIBS= $(LIBDIR)/libmkl_lapack.a $(LIBDIR)/libmkl_solver.a #--- здесь добавляй либы...  
 
my_main : my_main.o my_funcs.o  
  ic $(CFLAGS) -o my_main my_main.o -i-static my_funcs.o  -Wl,--start-group $(MKL_LIBS) -Wl,--end-group  
 
my_main.o : my_main.c my_main.h  
  ic -c $(CFLAGS) my_main.c  
 
my_funcs.o : my_funcs.c my_funcs.h my_func.txt  
#my_func.txt -- для изврата, вдруг ты самодокументированные пишешь  
  ic -c $(CFLAGS) my_funcs.c
Сделал с вариантом makefile, правда, разбираться пришлось немало, всё в основном вопросы синтаксического характера, как ещё раз убедился, малейшая ошибка в синтаксисе жесточайше карается (даже, если не отступил по TAB как положено)). И немало пришлось проштудировать userguide для MKL. Зато программа теперь пашет, причём весьма шустро, теперь остаётся разбираться с ключами

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3659 | Зарегистр. 08-02-2003 | Отправлено: 00:38 28-02-2009
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование »      makefile для Linux пойдет под Windows? (очень срочно)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru