Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Fortran > [Tools] XML


Автор: Cross 26.12.2008, 16:08
Здравствуйте!

Очень нужна помощь!

Мне нужно запустить примеры XML-парсера для FORTRAN. (http://xml-fortran.sourceforge.net/)
FORTRAN у меня работает в Eclipse (Photran) + библиотеки CYGWIN под Windows XP Professional.

Скачала дистрибутив, далее при установке создаются файлы:

xmlparse.a и xmlparse.mod

и написано, что нужно их поместить туда, где компилятор сможет их найти.

файл xmlparse.a я поместила в gfortran/lib/ (не знаю, правильно ли...)

А куда поместить файл xmlparse.mod ???

Автор: popovda 27.12.2008, 14:29
*.mod - это скомпилированные модули. Чаще всего они лежат или в lib, или в include. Пройдитесь посиком с условием *.mod по всем каталогам, начиная от места, где лежит Ваш компилятор. И поймёте куда их можно положить. Можно, кстати, и в каталог с программой, только тогда в make-файле или коммандной строке нужно будет указать полный путь к этим файлам. 

Автор: Cross 15.1.2009, 12:47
Продолжаю тему!!!

У меня примеры к xml-fortran запускаются в среде Compaq Visual Fortran! Все ок!

Но в Eclipse никак не получается. 
Используя подключаемые библиотеки он должен генерировать файлы: 

READ_XML_PRIMITIVES.mod
WRITE_XML_PRIMITIVES.mod

Но генерации не происходит, файлы не находит и соответственно не делает объектника. 

Получаю ошибку:

Код

make all 
gfortran -c -I ../src grid.f90
grid.f90:3.27:

   use WRITE_XML_PRIMITIVES
                          1
Fatal Error: Can't open module file 'write_xml_primitives.mod' for reading at (1): No such file or directory
gfortran.exe: Internal error: Aborted (program f951)
Please submit a full bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.
make: *** [grid.o] Error 1


Я уж не знаю, что и делать! 

Может кто-нибудь попробует у себя в Eclipse запустить примеры???

Потому что информацию по этой теме я вообще нигде не могу найти, а очень надо!!! 

На всякий случай вот makefile:

Код

FC    =    ifort
FOPT    =    -c -module ../src
FC    =    gfortran
FOPT    =    -c -I ../src

all        :    tst_grid 

tst_grid    :    tst_grid.o grid.o ../src/xmlparse.a
    $(FC) -o tst_grid tst_grid.o grid.o ../src/xmlparse.a

tst_grid.o    :    tst_grid.f90 grid.o
    $(FC) $(FOPT) tst_grid.f90

grid.o    :    grid.f90
    $(FC) $(FOPT) grid.f90

grid.f90    :    grid.xml
    echo grid > xmlreader.inp
    ../src/xmlreader
    $(FC) $(FOPT) grid.f90


Он взят из примеров!

Заранее спасибо! 
Очень надеюсь на сообщество программистов!!!  smile 

Автор: Cr@$h 16.1.2009, 12:39
Доброго времени суток.  Паниковать в любом случае не стоит. Рассуждаю в первом приближении.

Из этого лучше выбрать что-то одно:
Код

FC    =    ifort
FOPT    =    -c -module ../src
FC    =    gfortran
FOPT    =    -c -I ../src

хотя бы для определённости.

В grid.f90 вы используете модули read_xml_primitives, write_xml_primitives. Они в свою очередь используют модуль xmlparse. Думаю, скрипт составлен правильно, но вот только первые два модуля лежат в файлах с именами, отличными от названий этих модулей. Я ещё пока не запутал? :: read_xml_prims.mod, write_xml_prims.mod. Поэтому или переименуйте их или попробйте всё сделать божно: кинуть исходники анализатора в папку src и вместе с ними скомпилировать сетку. Просто добавьте эти файлы к проекту в Eclipse:  read_xml_primitives.f90, write_xml_primitives.f90, xmlparse.f90. Скомпилируйте проект заново. Makefile Eclipse должна формировать сама.

Я не вдавался сильно в подробности..

Автор: Cross 16.1.2009, 16:47
Спасибо за ответ!!!

Я переименовала файлы .mod, но это не помогло. 
Переписала их также в файлы проекта в Eclipse, тоже не помогло.

Makefile нужно делать самостоятельно, т.к. там есть одна хитрость...

Код

grid.f90    :    grid.xml
    echo grid > xmlreader.inp
    ../src/xmlreader
    $(FC) $(FOPT) grid.f90


Вот такая... т.е. берется темплейт xml и по нему генерируется файл grid.f90, 
который содержит процедуру чтения xml файла. 



Автор: Cr@$h 16.1.2009, 16:54
Цитата(Cross @  16.1.2009,  17:47 Найти цитируемый пост)
Я переименовала файлы .mod, но это не помогло. 
Переписала их также в файлы проекта в Eclipse, тоже не помогло.

Хорошо, но файлы лучше не переименовывать.

Скажите, вы знаете, как компилировать проект в Eclipse у вас там в эту минуту, который состоит из нескольких исходных файлов? Если да, то надо приартачить те три файла в проект (в дирикторию ту же src) и скомпилировать многофайловый проект. Он у вас, как минимум, будет состоять из сетки и трёх модулей. Понятно, да? Всё. Дальше напильником Makefile как-нибудь.. так:
Код

grid.f90    :    grid.xml
    echo grid > xmlreader.inp
    ../src/xmlreader
    $(FC) $(FOPT) grid.f90 read_xml_primitives.f90 write_xml_primitives.f90 xmlparse.f90


Добавлено через 2 минуты и 20 секунд
Ну или в оригинальных именах:
Код

grid.f90    :    grid.xml
    echo grid > xmlreader.inp
    ../src/xmlreader
    $(FC) $(FOPT) grid.f90 read_xml_prims.f90 write_xml_prims.f90 xmlparse.f90

Автор: Cross 16.1.2009, 17:15
Т.е. импортировать все файлы из src в корень проекта?
Но там собственный Makefile... 

в проекте может быть несколько Makefile ??? 

P.S. я полный профан в компилировании проектов в Eclipse... 

Цитата

Скажите, вы знаете, как компилировать проект в Eclipse у вас там в эту минуту, который состоит из нескольких исходных файлов? 


Не, не знаю... когда я просто создаю пустой проект и импортирую туда файлы из src, 
он сам компилируется... делает мне два exe-шника

Автор: Cr@$h 16.1.2009, 17:17
Понял, почти уверен, что получится. Здесь анализатор не оформляется как библиотека.
Код

FC    =    ifort
FOPT    =    -c -module ../src
FC    =    gfortran
FOPT    =    -c -I ../src
all        :    tst_grid 
tst_grid    :    tst_grid.o grid.o ../src/xmlparse.a
    $(FC) -o tst_grid tst_grid.o grid.o ../src/xmlparse.a
tst_grid.o    :    tst_grid.f90 grid.o
    $(FC) $(FOPT) tst_grid.f90
grid.o    :    grid.f90 read_xml_prims.f90 write_xml_prims.f90 xmlparse.f90
    $(FC) $(FOPT) grid.f90
grid.f90    :    grid.xml
    echo grid > xmlreader.inp
    ../src/xmlreader
    $(FC) $(FOPT) grid.f90


Добавлено @ 17:18
Цитата(Cross @  16.1.2009,  18:15 Найти цитируемый пост)
P.S. я полный профан в компилировании проектов в Eclipse... 

Я тоже этого никогда не делал. Попробуйте, что я написал выше.  smile 

Автор: Cross 16.1.2009, 17:22
Попробовала... не получается... 

Код

Fatal Error: Can't open module file 'read_xml_primitives.mod' for reading at (1): No such file or directory

Автор: Cr@$h 16.1.2009, 17:23
Тихо-тихо, у вас на диске краткие имена? Оставьте везде краткие оригинальные имена.

(думаю)

Добавлено через 49 секунд
Все исходники положите в одну папку.

Добавлено через 6 минут и 40 секунд
С именами что-то. Попробуйте их так назвать, полностью что ли..

Автор: Cross 16.1.2009, 17:35
Назвала read_xml_primitives.f90 и write_xml_primitives.f90... 
Скопировала в проект эти файлы...

В Makefile также поменяла их имена, 
но все равно не может найти .mod - файлы

Может весь src импортировать в проект? 

Может в Makefile прописать полный путь к src??? 

Ой, мне надо уже ехать через 10 минут ) Надеюсь еще поможете ))) Спасибо вам большое !

Автор: Cr@$h 16.1.2009, 17:46
Стоп! Мы два раза компилируем!

Код

FC    =    ifort
FOPT    =    -c -module ../src
FC    =    gfortran
FOPT    =    -c -I ../src
all        :    tst_grid 
tst_grid    :    tst_grid.o grid.o ../src/xmlparse.a
    $(FC) -o tst_grid tst_grid.o grid.o ../src/xmlparse.a
tst_grid.o    :    tst_grid.f90 grid.o
    $(FC) $(FOPT) tst_grid.f90
grid.o    :    grid.f90 read_xml_prims.f90 write_xml_prims.f90 xmlparse.f90
    $(FC) $(FOPT) grid.f90 read_xml_prims.f90 write_xml_prims.f90 xmlparse.f90
grid.f90    :    grid.xml
    echo grid > xmlreader.inp
    ../src/xmlreader


Добавлено через 1 минуту и 7 секунд
Цитата(Cross @  16.1.2009,  18:35 Найти цитируемый пост)
Ой, мне надо уже ехать через 10 минут ) Надеюсь еще поможете ))) Спасибо вам большое !

Задание считается выполненым, когда все целые возвращаются домой. Спасибо говорить рано.

Автор: Cross 16.1.2009, 17:49
Сейчас попробовала... все тоже самое  smile 


Автор: Cr@$h 16.1.2009, 17:51
Посление две строчки что означают? Уберите последнюю, везде используйте краткие имена: на диске и в скрипте.

Автор: Cross 16.1.2009, 17:54
Код

    echo grid > xmlreader.inp
    ../src/xmlreader


Вот эти строчки? 

они нужны как раз для формирования файла grid.f90 

В файле xmlreader.inc находится имя xml-темплейта, по которому 
формируется процедура чтения xml

Мне надо бежать...
Может если есть время у себя попробуете... 
вот ссылка 

http://dfn.dl.sourceforge.net/sourceforge/xml-fortran/xml-fortran-1.00.tar.gz

))) это быстро... устанавливается просто... 

Автор: Cr@$h 16.1.2009, 18:19
Используйте самый первый вариант скрипта, что вы привели в теме. xmlparse.a и xmlparse.mod, что вы получили поместите в папку src, тогда он должне смочь использовать эту библиотеку.

Автор: Cross 17.1.2009, 10:13
У меня получилось!!!

Вот такой makefile: 

Код

FC    =    gfortran
FOPT    =    -c -I ../src

all        :    write_xml_primitives.mod read_xml_primitives.mod tst_grid

write_xml_primitives.mod :    ../src/write_xml_prims.f90 
    $(FC) $(FOPT) ../src/write_xml_prims.f90

read_xml_primitives.mod :    ../src/read_xml_prims.f90 
    $(FC) $(FOPT) ../src/read_xml_prims.f90

tst_grid    :    tst_grid.o grid.o ../src/xmlparse.a
    $(FC) -o tst_grid tst_grid.o grid.o ../src/xmlparse.a

tst_grid.o    :    tst_grid.f90 grid.o
    $(FC) $(FOPT) tst_grid.f90

grid.o    :    grid.f90
    $(FC) $(FOPT) grid.f90

grid.f90    :    grid.xml
    echo grid > xmlreader.inp
    ../src/xmlreader
    $(FC) $(FOPT) grid.f90



В общем, как видите пришлось явно прописывать создание .mod - файлов.

Зато все теперь работает!!!


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)