Работа в Eclipse над многоязыковым проектом

При разработке программного обеспечения иногда может потребоваться работать одновременно с несколькими языками программирования в одном проекте. Свежий пример из практики — модернизация старого программного обеспечения, написанного на FORTRAN и Macro Assembler, для работы с новым аппаратным обеспечением. Математическую логику ПО нет смысла переписывать с FORTRAN  на какой-либо другой язык, а вот вместо написанного на Assembler драйвера лучше всего будет реализовать драйвер нового устройства на языке C.

Для реализации плана необходимы следующие инструменты:

Ниже описана настройка совместной работы этих программных пакетов.

Установка и настройка пакетов компиляторов:

Первым делом, запускаем  установочный пакет MinGW. Во время установки обязательно указываем, чтобы была модифицированная системная переменная сред $PATH. В конечном итоге откроется менеджер установки, предлагающий установить те или иные компиляторы и библиотеки.

eclipse1

 

Выбираем в левом дереве пункт «Basic Setup» и отмечаем для установки все пакеты, кроме mingw32-gcc-ada(кроме случаев если вам потом понадобится язык ADA). Выбираем пункт меню «Installation — Apply Changes» и выбранные пакеты автоматически установятся. В работе будут использоваться следующие пакеты:

  • mingw32-binutils — GNU assembler, линковщик, а также различные утилиты для работы с объектным кодом;
  • mingw32-gcc — GNU C компилятор;
  • mingw32-gcc-fortran — GNU Fortran компилятор;
  • mingw32-gcc-g++ — GNU C++ компилятор;
  • mingw32-gdb — GNU Отладчик

На этом, настройка пакета компиляторов завершена. Можно проверить корректность установки, открыв системную консоль и вписав туда команды gcc или gfortran — консоль не должна выдавать ошибок об отсутствии этих файлов. Напротив, программы попытаются исполниться, но выдадут ошибку об отсутствии файлов для компиляции. В этом случае все настроено правильно:

eclipse2 Установка и настройка Eclipse PTP

Для работы среды программирования Eclipse, в системе должен присутствовать Java JDK Platform. Для этого необходимо с официального сайта загрузить пакет Java SE под вашу операционную систему, строго с разрядностью операционной системы. Установите пакет стандартным способом.

Далее, загруженный архив с Eclipse необходимо распаковать и поместить папку с eclipse  в любое доступное место. Мне как Linux-администратору удобнее всего помещать подобные программы в c:\bin\. При этом  C:\bin у меня прописана в $PATH.

eclipse3

Запускаем в папке файл eclipse.exe. При запуске указываем рабочую папку с проектами. Дабы не запутаться в директориях я создал C:\home\admin\luna_projects. В настройках нашего проекта (менюProject- Properities) Выбираем пункт «C/C++ Build — Tool Chain Editor»В список используемых инструментов (Used Tools) нам необходимо добавить компилятор Fortran с помощью кнопки Select Tools:eclipse4 Выбираем в левом списке GNU Fortran Compiler и добавляем его в правый, с помощью кнопки Add tool —>

Остался последний пункт. В качестве линковщика такого проекта необходимо использовать gfortran а неgcc.

Для этого, переходим в раздел настроек «C/C++ Build — Settings». Краем глаза замечаем, что там появился раздел  GNU Fortran Compiler. Но нас интересует  пункт MinGW C Linker.  В строке Command прописываем gfortran. в пункте «MinGW C Linker — Miscellaneous» в строке Linker flags указываем -o f-call-c-gcc. Это означает, что при необходимости, при обработке файлов на C линковщик знает что ему вызывать. Сохраняем настройки и компилируем проект:

Info: Internal Builder is used for build
gcc -O0 -g3 -Wall -c -fmessage-length=0 -o «src\\rs232.o» «..\\src\\rs232.c»  компиляция библиотеки COM порта
gcc -O0 -g3 -Wall -c -fmessage-length=0 -o «src\\sensor.o» «..\\src\\sensor.c» компиляция утилит работы с датчиком на С
gfortran -funderscoring -O0 -g -Wall -c -fmessage-length=0 -o «src\\test.o» «..\\src\\test.for» компиляция математики на Fortran
gfortran -o f-call-c-gcc -o 227-encoder.exe «src\\test.o» «src\\sensor.o» «src\\rs232.o» линковка объектных файлов

12:34:12 Build Finished (took 2s.526ms) — успешная сборка проекта

Добавить комментарий