Watcom C/C++

Watcom – зірка минулого. Основні риси – багатоплатформність і якість
коду. У кращі часи генерував код для DOS real mode, DOS protected mode
(DOS/4G, DOS/4GW, Phar Lap), Win16, Win32, Win32s, QNX, OS / 2 (16 – & 32-bit),
Netware NLM. Причому, працюючи під будь-якою системою, можна було генерувати код для
всіх інших (наприклад, програму під Win32 можна було скомпілювати і
злінкувати з-під OS / 2 і т.д.). Watcom став вельми популярний в часи DOS-ігор,
працюють в захищеному режимі (DOOM та ін.)

До моменту появи версії 11.0 (1997 р.) фірма, яка розробляла Watcom, була
куплена Sybase Inc., і це, на жаль, сповістило про кончину компілятора.
Подальша розробка була практично заморожена, а в 1999 р. Sybase Inc.
оголосила про припинення продажів і встановила крайній термін, після якого буде
припинена і технічна підтримка для тих, хто ще встиг купити компілятор (це
було 30 червня 2000 р.). Подальша доля продукту поки невідома.

Остання версія – 11.0B. C + + компілятор в ній не підтримує namespaces і
не містить STL. Втім, існують багато реалізацій STL, що підтримують
Watcom C + + (наприклад, STLPort).

Під будь-яку підтримувану систему є набір стандартних утиліт: компілятори,
лінкер, відладчик (і), make, lib, strip і пр. У системах з GUI (OS / 2, Windows)
є також IDE (хоча і не дуже зручна).

Кодогенераціі застигла на рівні 1997 р., і тепер навіть MS Visual C + + обганяє
Watcom (природно, порівняння проводилися під Windows, але деякий
уявлення це дати може).

При роботі з Watcom C + + під OS / 2 потрібно знати наступне:


І наостанок варто ще раз нагадати про те, що компілятор більше не
розвивається і не підтримується. Наявні проблеми нікуди не дінуться і не будуть
тепер вирішені.

Посилання:


EMX (GNU C/C++)


EMX – представництво Unix в OS / 2 і одне з представництв Unix в DOS.
Це цілий комплект з компіляторів, супутніх утиліт і бібліотек підтримки.
В першу чергу призначений для портування програм із середовища Unix в OS / 2,
для чого емулює безліч функцій в "первозданному" вигляді, включаючи навіть і
fork (). Грунтується на одному з найбільших досягнень світу безкоштовних програм
– Системі компіляторів GCC (gcc означає "GNU Compiler Collection"). GCC складається
з власне трансляторів з мов програмування (в даний час це C,
C + +, Objective C, Fortran 77, Chill і Java, хоча ніщо не заважає вбудувати в
систему свою мову), що перетворюють вихідний код в програму на внутрішньому мовою
компілятора (він називається RTL – Register Transfer Language) і стартують вже від
подання на RTL генераторів машинного коду для різних платформ. У
Зокрема, підтримується і потрібна нам платформа i386.

Сам EMX є портом GCC під OS / 2 / DOS і містить змінені версії
компіляторів, лінкера, отладчика gdb і багатьох інших програм; стандартну
бібліотеку C, що містить безліч функцій зі світу Unix; DLL підтримки та багато
інше. Крім того, за допомогою EMX під OS / 2 були скомпільовані багато інших
Unix-програми, наприклад GNU Make, який обов'язково знадобиться при
мало-мальськи серйозної розробці.

Крім усього іншого, EMX дозволяє створювати "рідні" програми для OS / 2,
використовуючи OS / 2 API. Можна також використовувати в програмах одночасно і
"Рідні", і "запозичені" функції.

Програми ж, які не використовують OS / 2 API і деяких функцій Unix, будуть
"Контрабандою" працювати і з-під голого DOS під flat mode (у комплекті з EMX
поставляється DOS-розширювач). До того ж, і під Windows є розширювач
rsx.exe, що дозволяє запускати файли у форматі a.out, згенеровані EMX!

Але сам GCC родом зі світу Unix, і тому EMX також привносить із собою дещо
звідти. Ось основні моменти:


Як вже зазначалося вище, GCC розповсюджується під ліцензією GNU. Розробка
GCC, ініційована десь в кінці 80-х рр.. – На початку 90-х рр.., Спочатку здійснювалася
командою розробників, очолюваній ідеологом GNU Річардом М. Столлменом
(Rms); в 1996 р. ними була випущена версія 2.7.2.1 і потім експериментальна
версія 2.8.1. Якщо підтримка C в останній була на рівні ANSI C + розширення
(Див. вище), то ситуація з C + + була важкою; до того ж, розробка фактично
зупинилася. Але ще до випуску 2.8.1 за розвиток GCC взялася фірма Cygnus,
особливо направивши свої зусилля на виправлення ситуації з C + + (до того часу до
прийняття стандарту C + + залишалося не так вже й багато). Ця фірма випустила
кілька версій EGCS (Enhanced GNU Compiler Suite), після чого Столлмен і
компанія вирішили й зовсім їх благословити. Розвиток версії 2.8.1, яка мала купу
помилок у реалізації C + +, було закинуто, остання на той час версія EGCS
автоматично перетворилася в останню версію GCC (2.95), а розвиток GCC
фактично продовжилося командою з Cygnus. Остання випущена ними версія –
2.95.2, це сталося 27 жовтня 1999 (А сама Cygnus не так давно була
придбана відомої компанією Red Hat Inc.)

Остання версія GCC досить близька до стандарту, підтримує всі останні
додавання до C + + (на зразок namespace) і включає в себе також реалізацію STL від SGI
(Вона включена в libstdc + +, остання версія 2.90.8). STL з libstdc + + близька до
стандарту, але iostreams там все ще не template-based, а взяті з зовсім старою
libg + +. Втім, можна знову ж таки звернутися до STLport, вона
підтримує і GCC.

Таким є стан GCC на сьогоднішній момент. Проте, використовувати GCC під OS / 2
означає використовувати EMX, остання версія якого (v0.9d) включає в себе
старий GCC 2.8.1. Але все не так погано. Бо є ще проект під назвою PGCC,
суть Pentium-optimized GCC. Сам GCC хоч і містить різні оптимізації для
базової платформи i386, але про особливості конкретних процесорів сучасності
(А це окрім різних варіантів Pentium ще і Cyrix, AMD, все сильно
відрізняються один від одного по тому, як треба для них оптимізувати) знає
вкрай мало. Мета проекту PGCC – навчити GCC генерувати програми, вичавлюють
максимум з процесора. (PGCC – це набір "патчів" до GCC). А що найприємніше,
в команді PGCC є Андрій Заболотний (автор lxlite), крім усього іншого
компілюються релізи PGCC для OS / 2. Останній PGCC – 2.95.3, заснований на GCC
2.95.2. Оптимізація для конкретного процесора проводиться за умов згадування
певного ключа в командному рядку, так що якщо його не вказувати, то ми
отримуємо "чесний" GCC 2.95.2, з усіма його принадами.

А тепер про принади стосовно OS / 2. Сам компілятор версії 2.95.2 вже
цілком непоганий. Він параноідален в дусі останнього стандарту (по моїм суб'єктивним
відчуттям попереджень про помилки у порівнянні з версією EGCS 1.1.2 стало рази
у два більше), не падає, генерує прийнятний код. Сміливі можуть навіть поставити
ключ "-O6" і спробувати оптимізацію під Pentium (тут мається на увазі PGCC). Але
про нормальну налагодження PM-додатків можна відразу ж забути. Націлений на це
PMGDB, що входить до складу EMX, вкрай примітивний, та й деколи просто не працює
(У мене на Аврорі при виході просто висне і доводиться зрубати його по kill
-9). Те ж саме з profiling (підтримка заявлена, але знову ж таки на Аврорі висне
намертво, до reset). EMX runtime версії до 0.9d FIX 2 не працював на Аврорі, а
так само і будь-яка програма, його використала. Проблеми можуть з'явитися самі собою
(Приміром, у мене PrfOpenProfile ("test.ini", …) давав трап до тих пір, поки
через пару місяців не здогадався поставити ключ "-fwritable-strings"). Коротше
кажучи, будьте готові до виникнення дивних проблем і до дубової налагодженні.

Компілятори GCC (C і C + +), як уже говорилося вище, можна рекомендувати для
перенесення програм з Unix під OS / 2. Втім, саме в цій області дуже мало
варіантів, якщо не сказати, що якраз один. Можна, навпаки, за допомогою EMX
розробляти програми, які потім будуть працювати під Unix. Правда, до
жаль, багато функцій не підтримуються EMX. Як мінімум, немає черг
повідомлень, семафорів, shared memory (ні BSD, ні POSIX). Тут варто також
помітити, що порти GCC існують і під win32, і під DOS (а ще згадаємо про
можливість запуску a.out-програм, зроблених EMX, під DOS і win32!), так що
теоретично за допомогою EMX можна писати програми, які будуть компілюватися
і працювати під OS / 2, Unix, DOS і Windows.

Головне ж достоїнство EMX – він абсолютно безкоштовний і доступний у вихідних
текстах. А якщо ви не вірите, що він працює, ось доказ: така велика
річ, як XFree86, компілюється за допомогою EMX і працює під OS / 2! Не кажучи про
багатьох інших програмах меншого розміру.

Посилання:


Якщо у вас є зауваження, пропозиції або доповнення до цього матеріалу – пишіть.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*