Официальный форум СВД Встраиваемые Системы
03 Декабря, 2016, 07:41:53 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Настройка OpenWatcom для QNX4  (Прочитано 11338 раз)
Мария Большакова
Сотрудник СВД ВС
Ветеран

Сообщений: 617



WWW
« : 18 Февраля, 2010, 15:07:59 »

Введение

Проект Open Watcom (http://www.openwatcom.org) является открытым и бесплатным продолжением (ранее) широко известной линейки компиляторов Watcom.

Одной из возможностей компилятора Open Watcom (далее OW) является способность компилировать и собирать исполняемые модули для QNX4 на платформах Windows и Linux. Однако в оригинальном дистрибутиве OW такая возможность по умолчанию отключена в связи с применением открытой лицензии. В дистрибутиве отсутствуют необходимые для компиляции и сборки заголовочные файлы и библиотеки для QNX4. Данный документ и поставляемый компанией “СВД Встраиваемые Системы” инсталлятор призваны обеспечить поддержку QNX4 для Open Watcom.


Основные возможности

• Компиляция и сборка программ на языке Си для QNX4. Используются оригинальные библиотеки QNX4.

• Компиляция и сборка программ на языке Си++ для QNX4. Используются
библиотеки Си++ из OpenWatcom.

• Утилита сс, аналогичная QNX4.

• Сервер отладки QNX4, для удаленной отладки приложений.


В следующих двух сообщениях опубликованы инструкции по настройке:

 - Open Watcom для Windows Host и QNX4 Target
 - Open Watcom для Linux Host и QNX4 Target

Рекомендуется обратить внимание на следующие темы:

 - Дополнительные библиотеки QNX4 при работе с OpenWatcom

Для сборки и отладки QNX4 проектов из Open Watcom IDE под Windows:

ow_setup.txt
ow_changes_light.zip
« Последнее редактирование: 07 Мая, 2010, 12:31:56 от Михаил Колесов » Записан

Мария Большакова
Сотрудник СВД ВС
Ветеран

Сообщений: 617



WWW
« Ответ #1 : 18 Февраля, 2010, 15:16:22 »

Инструкция по настройке Open Watcom для Windows Host и QNX4 Target


Системные требования

 - Windows XP

 - Open Watcom для Windows

Последнюю версию дистрибутива (v.1.7 на момент написания документа) можно свободно скачать с сайта проекта http://www.openwatcom.org.

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

 - Perl

В Open Watcom не входит утилита сс (она является собственностью QSS). Для удобства работы, как в QNX4, нами была разработана аналогичная по синтаксису и функционалу утилита на языке perl. Для Windows можно свободно скачать дистрибутив Active Perl в котором есть все необходимое http://www.activestate.com/Products/activeperl/index.mhtml.

*Дистрибутив Active Perl может быть записан на компакт диск вместе с инсталлятором.

 - Заголовочные и библиотечные файлы из QNX4

Важно! После установки дистрибутивов необходимо перезагрузить или сделать log off Windows для применения настроек Open Watcom и Perl.


Формирование каталога с файлами из QNX4

Общий смысл заключается в том, чтобы сделать заголовочные и библиотечные файлы QNX4 доступными для инсталлятора. Этого можно достичь разными способами. Здесь рассматривается самый простой вариант – копирование файлов из QNX4 в Windows. Еще одной немаловажной деталью является – что именно копировать. Дело в том, что в ряде пакетов для QNX4 встречаются файлы с одинаковыми именами и похожей функциональностью.

Далее следует пошаговый алгоритм:

1. По умолчанию путь для заголовочных файлов из QNX4 - С:\QNX4\include. Создаем этот путь.

*Если вы ходите его изменить, вам следует изменить содержимое переменной Q4_ORIG_H в скрипте инсталлятора setup.bat.

2. По умолчанию путь для библиотечных файлов из QNX4 - С:\QNX4\lib. Создаем этот путь.

*Если вы ходите его изменить, вам следует изменить содержимое переменной Q4_ORIG_L в скрипте инсталлятора setup.bat.

3. В каталог С:\QNX4\include копируем все содержимое следующих каталогов QNX4:

/usr/watcom/10.6/usr/include/ для использования Watcom Compiler. Кроме файла String.h (с большой буквы S).

/usr/tcptk/4.25/usr/include/ для использования TCP/IP TK. В этом каталоге есть одинаковые по имени файлы каталога Watcom. При перезаписи файлами TCP/IP TK устанавливается настройка QNX4 по умолчанию.

Прочие заголовочные файлы копируются аналогичным образом.

4. В каталог С:\QNX4\lib копируем все содержимое следующих каталогов QNX4:

/usr/watcom/10.6/usr/lib/ для использования Watcom Compiler.
/usr/tcptk/4.25/usr/lib/ для использования TCP/IP TK. В этом каталоге есть одинаковые по имени файлы каталога Watcom. При перезаписи файлами TCP/IP TK файлов Watcom устанавливается настройка QNX4 по умолчанию.

Прочие библиотечные файлы копируются аналогичным образом.


 Запуск инсталятора

Запустите файл setup.bat из дистрибутива. Все операции установки файлов поделены на логические этапы. Следующий этап начинается по нажатию клавиши. Если при выполнении скрипта возникают ошибки, проверьте правильность размещения исходных файлов и соответствующие пути в конфигурационной области скрипта (обозначена как Configuration Area).

При перезапуске, инсталлятор сначала удаляет все предыдущие установки (с подтверждением), после чего ставится новая копия указанных в скрипте файлов. Файлы Open Watcom и сформированного вами QNX4 каталога инсталлятором не затрагиваются.т Поскольку инсталлятор организован в виде открытого скрипта для Cmd.exe, вы может сами проверить правильность установки и при необходимости изменить ее ход.


Компиляция и сборка приложений

При успешной установке вы должны получить подготовленную среду для сборки приложений под QNX4 из консоли cmd. Например, теперь приложение Hello, World на языке Си можно собрать так:

cc –o hello hello.c

А такое же приложение на языке Си++, так:

cc –o hello_cpp hello_cpp.cpp

Для запуска под Windows, утилита сс преобразована в .bat файл, который по
умолчанию копируется в %WATCOM%\binnt (присутствует в PATH). Если у вас в системе присутствуют утилиты сс других дистрибутивов, может понадобиться переименование или вызов с полным путем. Для вызова сс (на самом деле cc.bat) внутри другого .bat файла нужно применять команду call cc [параметры].

На выходе вы получите .obj и .qnx файлы. Файлы с расширением .qnx являются исполняемыми файлами QNX4. Их следует перенести на QNX4-машину, добавить права на выполнение и после этого их можно запускать.

Если вы не используете утилиту сс в своей работе, вы можете вызывать компиляторы и линкер напрямую. Обратите внимание, что по умолчанию инсталлятор устанавливает заголовочные файлы в каталог %WATCOM%\h\qnx4, а библиотеки в каталог %WATCOM%\lib386\qnx4.


Отладка приложений

В составе дистрибутива инсталлятора идут файлы сервера отладки. Они копируются в каталог %WATCOM%\binq. Файлы tcpserv и std.trp следует перенести на целевую QNX4-машину, cерверу отладки tcpserv следует добавить права на выполнение. Обратите внимание на то, что в поставке QNX4 присутствует сервер отладки из Watcom 10.6, который не совместим с Open Watcom. Как следует из названия, tcpserv - это сервер работающий через TCP/IP протокол. Его задача запустить и контролировать QNX4-приложение согласно командам удаленного отладчика (wd).

Со стороны QNX4 нужно запустить сервер следующим образом:

# tcpserv /trap=std.trp

Со стороны Windows можно запускать консольный (wd) или графический интерфейс (wdw). Для облегчения работы с настройками под Windows создана графическая утилита wdc_tcp, которую после инсталляции можно найти в %WATCOM%\binnt.

Более подробно об отладке Watcom-утилитами и их синтаксисе можно почитать в документе Open Watcom Debugger User’s Guide (в частности, глава 10. Remote Debugging) с сайта проекта.

Для отладки в исходных кодах необходимо скомпилировать приложение в
отладочном варианте. При компиляции с помощью сс нужно указать ключ –g3.


Особенности Open Watcom Windows Host

• Объектные файлы, которые генерирует компилятор OW С++ не совместимы с оригинальными С++ библиотеками из QNX4. С++ библиотека OW (как прежде и Watcom) является независимой от платформы и претерпела существенные изменения. Поэтому все заголовочные и библиотечные файлы С++ из QNX4 заменяются на аналогичные из OW. При работе с С++ стоит использовать источники информации для OW. Подробнее смотрите на сайте проекта.

• В QNX4 файл String.h (с большой буквой S) является С++ заголовочным файлом и точной копией string.hpp, который реализует класс String. В том же каталоге присутствует файл string.h (с маленькой буквой s), который декларирует Си-функции по работе со строками (strcpy, strlen, и п.р.). Для *nix систем такое соседство естественно, но при копировании этих файлов в Windows возникает противоречие в связи с тем, что MS-системы не различают уровня регистра. Следует скопировать лишь string.h для Си и string.hpp для Си++. Последний рекомендуется включать в код на Си++ в качестве заголовочного файла вместоString.h.


Автор статьи: Михаил Колесов


Установочный скрипт и дополнительные программы для Windows:

ow_q4_win_20081224.zip
« Последнее редактирование: 18 Февраля, 2010, 15:50:03 от Мария Большакова » Записан

Мария Большакова
Сотрудник СВД ВС
Ветеран

Сообщений: 617



WWW
« Ответ #2 : 18 Февраля, 2010, 15:18:36 »

Open Watcom для Linux Host и QNX4 Target

Системные требования

 - Linux

OW не завязан на какой-либо конкретный дистрибутив Linux. Нами для сборки OW использовался дистрибутив Slackware Linux v.12.

 - Open Watcom

Для Linux, OW распространяется только в исходных текстах. Последнюю версию (v.1.7 на момент написания документа) можно свободно скачать с сайта проекта http://www.openwatcom.org.

Здесь подразумевается, что установка происходит от пользователя root, а так же то, что исходные тексты будут распакованы в каталог /opt/open_watcom_1.7.1/. В противном случает, путь к OW нужно поменять в скрипте инсталлятора setup.sh и в утилите сс. Настройки обоих находятся в области помеченной как Configuration Area. Там же можно менять других параметры установки.

Для компиляции и сборки OW необходимо запустить скрипт build.sh из каталога OW. Результаты сборки будут помещены в каталог rel2, тут же. Более подробно о процессе сборки можно почитать на  официальном сайте и в документации идущей вместе с исходными текстами.

*Исходные тексты OW могут быть записаны на компакт диск вместе с инсталлятором.

- Perl

В Open Watcom не входит утилита сс (она является собственностью QSS). Для удобства работы, как в QNX4, нами была разработана аналогичная по синтаксису и функционалу утилита на языке perl. Обычно, в дистрибутивах Linux, perl присутствует по умолчанию. В случае необходимости его можно скачать с сайта http://www.perl.org.

- Заголовочные и библиотечные файлы из QNX4


Формирование каталога с файлами из QNX4

Общий смысл заключается в том, чтобы сделать заголовочные и библиотечные файлы QNX4 доступными для инсталлятора. Этого можно достичь разными способами. Здесь рассматривается самый простой вариант – копирование файлов из QNX4 в Linux. Еще одной немаловажной деталью является – что именно копировать. Дело в том, что в ряде пакетов для QNX4 встречаются файлы с одинаковыми именами и похожей функциональностью.

Далее следует пошаговый алгоритм:

1. По умолчанию путь для заголовочных файлов из QNX4 - /root/qnx4/include. Создаем этот путь.

*Если вы ходите его изменить, вам следует изменить содержимое переменной Q4_ORIG_H в скрипте инсталлятора setup.sh.

2. По умолчанию путь для библиотечных файлов из QNX4 - /root/qnx4/lib. Создаем этот путь.

*Если вы ходите его изменить, вам следует изменить содержимое переменной Q4_ORIG_L в скрипте инсталлятора setup.sh.

3. В каталог /root/qnx4/include копируем все содержимое следующих каталогов QNX4:

/usr/watcom/10.6/usr/include/ для использования Watcom Compiler.
/usr/tcptk/4.25/usr/include/ для использования TCP/IP TK. В этом каталоге есть одинаковые по имени файлы каталога Watcom. При перезаписи файлами TCP/IP TK устанавливается настройка QNX4 по умолчанию.

Прочие заголовочные файлы копируются аналогичным образом.

4. В каталог /root/qnx4/lib копируем все содержимое следующих каталогов QNX4:

/usr/watcom/10.6/usr/lib/ для использования Watcom Compiler.
/usr/tcptk/4.25/usr/lib/ для использования TCP/IP TK. В этом каталоге есть одинаковые по имени файлы каталога Watcom. При перезаписи файлами TCP/IP TK файлов Watcom устанавливается настройка QNX4 по умолчанию.

Прочие библиотечные файлы копируются аналогичным образом.


Запуск инсталлятора

По умолчанию, запуск производиться от пользователя root. Запустите файл setup.sh из дистрибутива. Все операции установки файлов поделены на логические этапы. Следующий этап начинается по нажатию клавиши.

Если при выполнении скрипта возникают ошибки, проверьте правильность размещения исходных файлов и соответствующие пути в конфигурационной области скрипта (обозначена как Configuration Area).

При перезапуске, инсталлятор сначала удаляет все предыдущие установки (с подтверждением), после чего ставится новая копия указанных в скрипте файлов. Файлы Open Watcom и сформированного вами QNX4 каталога инсталлятором не затрагиваются.

Поскольку инсталлятор организован в виде открытого shell-скрипта, вы может сами проверить правильность установки и при необходимости изменить ее ход.


Компиляция и сборка приложений

При успешной установке вы должны получить подготовленную среду для сборки приложений под QNX4 из консоли.

Например, теперь приложение Hello, World на языке Си можно собрать так:

cc –o hello hello.c

А такое же приложение на языке Си++, так:

cc –o hello_cpp hello_cpp.cpp

Утилита сс по умолчанию копируется в /opt/open_watcom_1.7.1/binl (по умолчанию отсутствует в PATH!). Если у вас в системе присутствуют утилиты сс других дистрибутивов, может понадобиться переименование или вызов с полным путем.

Получившиеся исполняемые файлы следует перенести на QNX4-машину, добавить права на выполнение и после этого их можно запускать.

Если вы не используете утилиту сс в своей работе, вы можете вызывать компиляторы и линкер напрямую. Обратите внимание, что по умолчанию инсталлятор устанавливает заголовочные файлы в каталог /opt/open_watcom_1.7.1 /h/qnx4, а библиотеки в каталог /opt/open_watcom_1.7.1/ lib386/qnx4.


Отладка приложений

В составе дистрибутива инсталлятора идут файлы сервера отладки. Они копируются в каталог /opt/open_watcom_1.7.1/binq. Файлы tcpserv и std.trp следует перенести на целевую QNX4-машину, cерверу отладки tcpserv следует добавить права на выполнение. Обратите внимание на то, что в поставке QNX4 присутствует сервер отладки из Watcom 10.6, который не совместим с Open Watcom.

Как следует из названия, tcpserv это сервер работающий через TCP\IP протокол. Его задача запустить и контролировать QNX4-приложение согласно командам удаленного отладчика (wd).

Со стороны QNX4 нужно запустить сервер следующим образом:

# tcpserv /trap=str.trp

Со стороны Linux нужно запустить консольный интерфейс отладчика (wd):

$ wd /trap=tcp.trp;192.168.4.15 /download ./hello

Более подробно об отладке Watcom-утилитами и их синтаксисе можно почитать в документе Open Watcom Debugger User’s Guide  (в частности, глава 10. Remote Debugging) с сайта проекта.

Для отладки в исходных кодах необходимо скомпилировать приложение в отладочном варианте. При компиляции с помощью сс нужно указать ключ –g3.


Особенности Open Watcom Linux Host

• Объектные файлы, которые генерирует компилятор OW С++ не совместимы с оригинальными С++ библиотеками из QNX4. С++ библиотека OW (как прежде и Watcom) является независимой от платформы и претерпела существенные изменения. Поэтому все заголовочные и библиотечные файлы С++ из QNX4 заменяются на аналогичные из OW. При работе с С++ стоит использовать источники информации для OW. Подробнее смотрите на сайте проекта.


Автор статьи: Михаил Колесов


Установочный скрипт и дополнительные программы для Linux:


ow_q4_linux_20081229.tar.gz
« Последнее редактирование: 18 Февраля, 2010, 15:41:04 от Мария Большакова » Записан

Василий Дмитриев
Опытный пользователь

Сообщений: 293



« Ответ #3 : 22 Февраля, 2010, 14:38:05 »

Итоги первых дилетантских опытов
Исходные данные:
Хост - WinXP SP3
OW v.1.8
Active Perl 5.10.1
Вместо указанных в инструкции файлов от TCP 4.25 взяты файлы от TCP 5.0

Установка прошла без замечаний со стороны установочного скрипта.

Программа <Hello, world!> скомпилировалась и запустилась под qnx4

Далее начались опыты с давним и весьма большим проектом.
Где-то час два потратил на выгребание ошибок и замечаний. Новый компилятор оказался весьма строг (но справедлив) в части преобразования типов и требования к прототипам функций.
Но вот убит последний warning и ...
Линкер не находит библиотеки socket  Shocked
Ладно. меняем в cc ключ -lsocket на -lsocket3r
Слинковались.
Получен желанный файл с расширением qnx.
Копирую, чмодю.
И облом ...
Exec file format error Shocked


Записан

Санкции! Запрещаю Бараку Обаме и членам конгресса США читать мои посты!
Олег Большаков
Администратор
Житель форума

Сообщений: 2929



WWW
« Ответ #4 : 22 Февраля, 2010, 15:04:36 »

Василий, подготовьте и выложите тут минимально возможный неработающий проект. Собирал несколько проектов и особенностей с линковкой библиотеки socket не было.

Что-то знакомое в этой ошибке есть, когда-то такое у нас было (не уверен, что связано с опен-ваткомом), но сейчас не помню.
Записан

Василий Дмитриев
Опытный пользователь

Сообщений: 293



« Ответ #5 : 22 Февраля, 2010, 15:25:31 »

Попытаюсь минимизировать:) Там исп.файл более 600к получается. Уже сейчас попробовал собрать другой более мелкий проектик(чуть больше 20к) и вроде он пошел
Записан

Санкции! Запрещаю Бараку Обаме и членам конгресса США читать мои посты!
Олег Большаков
Администратор
Житель форума

Сообщений: 2929



WWW
« Ответ #6 : 22 Февраля, 2010, 23:56:59 »

Василий, посмотрел на тот код, что Вы мне выслали. У Вас используется директива #pragma data_seg (). Собственно из-за этого и проявляется в Вашем случае означенная ошибка. Похоже, что разработчики OpenWatcom что-то изменили в генерации кода.

Попутно я доработал утилиту cc, т.к. в ней тоже были неточности. Wink
Записан

Василий Дмитриев
Опытный пользователь

Сообщений: 293



« Ответ #7 : 23 Февраля, 2010, 10:32:16 »

Бум думать что делать. Эта прагма использовалась(дай Бог памяти) для сбора в конкретную кучку тех областей данных, которые должны были быть доступны из обработчика прерывания. Без нее любые изменения превращались в лотерею. Иногда после перекомпиляции начинал лететь обработчик.
Записан

Санкции! Запрещаю Бараку Обаме и членам конгресса США читать мои посты!
Петр Русинов
Интересующийся

Сообщений: 7


« Ответ #8 : 24 Апреля, 2010, 10:36:30 »

Компиляция и сборка программ на языке Си++ для QNX4. Используются
библиотеки Си++ из OpenWatcom.

На конференции одним из докладчиков СВД ВС было сказано, что на OpenWatcom нельзя собирать программы на С++ для QNX4.
В чем же истина? Можно или нельзя?
Или я что-то не так услышал?
Записан
Олег Большаков
Администратор
Житель форума

Сообщений: 2929



WWW
« Ответ #9 : 24 Апреля, 2010, 10:58:17 »

Можно. Наши специалисты использовали компилятор OpenWatcom в одном из проектов как раз для сборки C++ библиотеки под QNX4. Могут проявиться особенности, которые описаны тут.

Скорее всего докладчик сказал, что надо использовать библиотеки C++ из самого OpenWatcom, а не из QNX4. Компилятор C++ в OpenWatcom является надстройкой над компилятором C, при линковке программ используются платформонезависимые библиотеки. А вот с библиотеками C++ из Watcom 10.6 собрать программу с помощью OpenWatcom не получится.
Записан

Петр Русинов
Интересующийся

Сообщений: 7


« Ответ #10 : 24 Апреля, 2010, 12:23:04 »

а, тогда понятно
значит, со своими библиотеками проблем быть не должно
спасибо за ответ
Записан
Олег Большаков
Администратор
Житель форума

Сообщений: 2929



WWW
« Ответ #11 : 24 Апреля, 2010, 14:03:45 »

Скажем так, те проблемы, что были у нас мы решили. Если столкнётесь с чем-то новым, то сообщите.
Записан

Петр Русинов
Интересующийся

Сообщений: 7


« Ответ #12 : 05 Мая, 2010, 15:17:14 »

Как я понял, в данной конфигурации OW позволяет собирать программы в консоли. Можно ли как-то настроить ide для сборки qnx-проектов?
Записан
Михаил Колесов
Опытный пользователь

Сообщений: 125



« Ответ #13 : 06 Мая, 2010, 15:34:33 »

Да, возможно. Прикрепляю инструкцию по настройке Open Watcom IDE Windows Host QNX4 Target и архив с файлами конфигурации. В архиве отсутствуют оригинальные заголовочные файлы и библиотеки QNX4 (поэтому и light), их потребуется добавить по инструкции.

ow_setup.txt
ow_changes_light.zip

От Олега Большакова: Заменил ссылки. Может перенести их в первое сообщение?
От Михаила Колесова: Продублировал в первом сообщении
« Последнее редактирование: 07 Мая, 2010, 12:25:12 от Михаил Колесов » Записан
Pupir
Интересующийся

Сообщений: 1


« Ответ #14 : 12 Мая, 2010, 12:00:30 »

Добрый день! Пытаемся собрать сервер отладки для QNX4.
Цитата из инструкции:
 1. Скачиваем файл архива с исходными текстами Open Watcom, с любым расширением
Где этот файл взять? можно ссылочку?

Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2016 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 27 Ноября, 2016, 21:50:27