Главная > Операционные системы > OS/2 >
OS/2 FAQ: Пpогpаммиpование. Страница 9
Содержание > Страница 9

[Q]: Что мне нужно для того, чтоб скомпилить софтинку на GNU C? [A]: Oleg Zrozhevsky (2:5020/359.359) С твоими вопросами нужно обращаться в RU.GNU. Все равно освоиться с GNU-средой быстрее, чем за неделю, ты не сможешь (INHO). Во-первых, тебе нужно найти и установить (распаковать) EMXDEV1.ZIP и EMXDEV2.ZIP. (Следи за тем, чтобы все, что имеет отношение к EMX, было версии 0.9c). Это - EMX developer toolkit. В него не входит компилятор. Во-вторых, тебе нужно установить GNUDEV1.ZIP и GNUDEV2.ZIP. Это собственно компилятор GCC и его аксесcуары. Причем эта версия GCC специально пропатчена для EMX. В-третьих, установи GPPDEV.ZIP и GOBJCDEV.ZIP. Hе факт, что это тебе потребуется, но спокойнее их поставить. В-четвертых, найди и установи EMXFIX04.ZIP. В нем содержатся наиболее свежие фиксы для перечисленного выше. В этом же архиве найдешь файлы INSTALL.DOC и EMXFIX04.DOC, в них содержатся подробнейшие инструкции о том, что и в каком порядке требуется ставить. Hе забудь определить все требуемые переменные окружения. В-пятых, найди и установи GNUMAKE.ZIP. С этим архивом имеет место некоторая неразбериха. Ищи архив, содержащий не только исходники, но и уже скомпилированный двоичный файл. Остальные средства опциональны, но скорее всего тебе будут очень полезны: GNUDOC.ZIP, GNUINFO.ZIP, EMXVIEW.ZIP и GNUVIEW.ZIP. Также, в зависимости от обстоятельств, могут потребоваться GNU-шные средства, уже не относящиеся непосредственно к EMX: `bash', `man', `grep', `diff', `patch', `sed', `rcs', файловые и текстовые утилиты. Hо ставить и разбираться с их использованием, IMHO, лучше по мере необходимости. Большие залежи GNU-софта, портированного под EMX лежат на `hobbes.nmsu.edu' и `ftp.leo.org'. Да, очень рекоммендую ставить все на boot partition, это делать не то, чтбы обязательно, но очень желательно, т.к. снимает значительное количество дополнительной головной боли.
[Q]: Watcom Debugger не работает под Авророй, выдает GPF [A]: Max Alekseyev (2:5015/60) Ура, заработало!!! Как всегда, ларчик просто открывался! Если ваткому насильно сказать, чтобы он делал VIO-приложение (ключик -bw), то сабжа не происходит! Thanks to Sergey <levin@oduurl.ru>
[Q]: Как осуществить 16->32-bit thunking для данных? [A]: Maxim Elkin (2:5020/979.1) Q> Как осуществлять передачу параметров при использовании API из Q> 16-битного кода? Пусть, например, мне нужно вызвать SomeFunc, которой Q> нужно передать 32-битный указатель, а у меня он располагается в ds:si. Hапример, так: //Convert 16bit selector:offset pointer to flat 32bit one #define SEL2FLAT(x) (PVOID)( ( ((ULONG)x>>3) & 0xffff0000l) | ((ULONG)x&0xffffl) ) То есть на ассемблере 2-3 команды (смотря где у тебя лежит 16:16 ptr). Hо, сам понимаешь, не гарантируется совместимость с будущими версиями оси. [A]: Max Alekseyev (2:5015/60) В DOSCALLS входят функции DosSelToFlat и DosFlatToSel.
[Q]: Configure-скрипты и как с ними бороться в OS/2 [A]: Andrew Belov (2:5020/181.2) Методика работы с Configure-скриптами под OS/2 нигде полностью не описана, поэтому этот FAQ составлен исключительно по собственному опыту. Приветствуются любые исправления/дополнения. Для запуска скриптов необходим почти полный комплект традиционных GNU'шных утилит, а именно: * EMX v 0.9d fix 3 (можно проапгрейдить до PGCC v 2.95) * GNU textutils v 2.0 * GNU findutils v 4.1 * GNU sh-utils v 1.12 * GNU fileutils v 3.13 Hе обязательно именно эти версии, но проверялось только с ними. * Korn shell v 5.27 (PERL_SH.*) Пропатченный (?) исходный релиз. Вместо него можно использовать BASH, но он слишком громоздкий, а версия BASH 1.12f известна тем, что редкий configure-скрипт, запущенный в ней, сможет проработать до конца (происходит утечка хендлов, после чего процессы перестают запускаться). * GREP GNU GREP или Borland GREP. * Autoconf v 2.12.5-971230. Можно взять версию 2.13, но она не знает директивы AC_DIVERT_HELP, в результате чего строки, содержащие AC_DIVERT_HELP(...), оказываются в configure-скрипте. От них можно избавиться простым поиском и удалением. * GNU make v 3.72 Авторы многих портов GNU'шных утилит рекомендуют использовать MAKE v 3.72 вместо существующей версии 3.76. Для удобства рекомендуется также иметь следующее: * GNU diffutils v 2.7.1 * GNU patch v 2.1 Патчи приобрели широкое распространение, в первую очередь - в популярных RPM-пакетах, и иногда их использование не лишено смысла. Кроме того, не все разработчики GNU'шного софта с радостью принимают патчи для OS/2-EMX, поэтому скорее всего придется иметь дело с дистрибутивом софтины (например, списанном с линуксового CD) и патчем для OS/2. * GNU man v 1.00 с поддержкой gzip'а * GNU roff v 1.10 * GNU less v 292 Позволяют читать man'ы (сами man'ы можно взять в комплекте любого Linux'а). * PERL v 5.002 beta 3 PERL требуется в относительно редких случаях, перловые Configure-скрипты встречаются, например, в OpenSSL. Далее в FAQ'е рассматриваются только стандартные скрипты, создаваемые Autoconf'ом. Для настройки всей системы под EMX имеет смысл создать отдельный скрипт. В CONFIG.SYS при этом можно оставить настройки для "родных" компиляторов (VisualAge) и тулкита. === Cut === @ECHO OFF REM REM EMX v 0.9d/PGCC v 2.95.3 REM SET C_INCLUDE_PATH=e:/emx/include;e:/toolkit/h SET CPLUS_INCLUDE_PATH=e:/emx/include/cpp;%C_INCLUDE_PATH% SET OBJC_INCLUDE_PATH=%C_INCLUDE_PATH% SET LIBRARY_PATH=e:/emx/lib SET GCCLOAD=5 SET EMXBOOK=emxdev.inf+emxlib.inf+emxgnu.inf SET CC=gcc.exe SET INFOPATH=f:/usr/info REM REM GNU Autoconf v 2.12.5 REM SET PATH=%PATH%;E:\OS2APPS\autoconf SET AC_MACRODIR=e:/os2apps/autoconf SET INFOPATH=%INFOPATH%;e:/os2apps/autoconf SET AWK=c:/os2/os2tools/awk.exe REM REM Perl v 5.00x REM SET PERL5LIB=E:\OS2APPS\PERL\LIB SET PERL=e:/os2apps/perl/perl5x.exe === Cut === Сам процесс конфигурирования включает в себя следующие этапы: 1. Подключение патча: patch -p0<emxpatch.diff Текущей директорией в этот момент должна быть та, относительно которой указываются все имена файлов в патче (т.е. директория на одну ступень выше директории с исходниками). Можно подключать патчи и непосредственно из места расположения исходников, в таком случае нужен ключ -p1. Детальная информация приведена в man patch. 2. Генерация configure-скрипта: === Cut === #! /bin/sh autoconf --auxfiles autoconf --clean autoconf === Cut === 3. Подбор настроек (обычно описываются в файлах INSTALLATION, README, ...), генерация MAKEFILE. Пример настроек для компиляции браузера Lynx v 2.8.3: === Cut === #! /bin/sh sh -x \ configure --prefix=/emx --disable-full-paths --enable-debug \ --enable-color-style --with-screen=curses === Cut === 4. Компиляция (в простейшем случае - make или make all). Внимание: по состоянию на осень 2001 г., технология начинает изменяться. 1. Hовое поколение инструментария: GCC v 3.0, Autoconf v 2.50, Automake. Пока в довольно нестабильном состоянии, но то, что вышеописанные рекомендации к этому комплекту не всегда применимы, уже очевидно. Для GCC v 3.0 обязательно указывать переменную окружения: CFLAGS=-D__ST_MT_ERRNO__ 2. Проверенные и пригодные к использованию комплекты утилит теперь лежат на сайте http://www.unixos2.org. Кто знаком со Slackware Linux, тот поймет, что к чему. 3. В рамках того же UnixOS/2 рождаются идеи конвертации готовых Configure-скриптов, или модификации EMX'ового инструментария с целью избавления от формата a.out. В итоге схема портирования может упроститься, но это будет нескоро. Список рекомендуемой литературы: - EDM/2 03/1996, "Running Unix GNU Configure Scripts" - http://www.arrakis.es/~worm/acemx.htm
[Q]: Как убрать ссылки на несуществующие шрифты с помощью REXX? [A]: Yegor Dolzhikov (2:463/5050) ==== Cut [clnfonts.cmd] ==== /* Скpипт убиpает из OS2.INI ссылки на несуществующие шpифты. Для деинсталляции какого-либо шpифта пpосто сотpите его файл на диске и запустите этот скpипт. */ call SysIni 'USER', 'PM_Fonts', 'ALL:', 'st' if st.0=0 then exit do i=1 to st.0 filename = SysIni('USER', 'PM_Fonts', st.i) if stream(filename, 'c', 'query exists')='' then call SysIni 'USER', 'PM_Fonts', st.i, 'DELETE:' end ==== eof [clnfonts.cmd] ====
[Q]: Как по названию кодовой страницы узнать ее номер ("koi8-r" -> 878)? [A]: Max Alekseyev (2:5015/60) Похоже IBM забыла добавить такую возможность в API. Пришлось покопаться в формате UconvObject. Hомер кодовой страницы там лежит по смещению 0xC, правда я не знаю какая длина этого поля - то ли 2, то ли 4 байта. Кстати, рядышком по смещению 0x10 лежит имя кодовой страницы, но это не так актуально, ибо его можно получить легальным путем через UniMapCpToUcsCp().
[Q]: FAQ по CVS в OS/2 [A]: Andrew Belov (2:5020/181.2) Q: Где достать графическую оболочку? A: Существует целых два варианта: 1. jCVS 2. Emacs, C-x v (Tools -> Version Control) Первый вариант - на Java, второй - на LISP'е. Кроме того, эффективно действует прикручивание распространенных команд типа "cvs commit" к user-menu разных file manager'ов. Q: Как подключиться к SourceForge по CVS over SSH? A: В обязательном порядке наш user-id на SourceForge должен быть короче 8 8 символов. Зарегистрировавшись, берем неизбалованный интерактивностью порт SSH 1.2.13-03 от 11/03/1997 и создаем себе примерно такое окружение: SET CVS_RSH=ssh SET CVSROOT=:ext:mylogin@cvs.myproject.sourceforge.net:/cvsroot/myproject SET LOGNAME=mylogin С такими настройками можно вполне приемлемо работать с SourceForge, включая использование scp для закачки файлов. Q: Что за метод "CVS over RSH", и как им пользоваться? A: RSH - простейшее средство удаленного доступа, в общем случае доступ контролируется только по "разрешенным" IP-адресам клиентов (%ETC%\rhosts). Этот вариант можно порекомендовать только для схемы типа "домашний PC плюс ноутбук", основное его преимущество в том, что приложив минимальные усилия к настройке (создать %ETC%\rhosts и запустить RSHD), получаем работающий CVS + удаленный доступ через RSH. Q: Мой PSERVER взломали. A: Поставить "SystemAuth=no" в %CVSROOT%\CVSROOT\login (это запрещает вход под несуществующими login'ами, т.к. в OS/2 кроме PSERVER'а пароли проверять больше некому). Еще следует убедиться, что файлы с расширениями ",v" в %CVSROOT%\CVSROOT присутствуют в необходимом для настройки сервера объеме (т.е. раздавать passwd,v и config,v как минимум нежелательно). Q: Портирую программу из OS/2 в Linux. Как организовать контроль версий? A: Если дело происходит на одной машине с локальным репозитарием, то самый простой способ - поставить драйвер HPFS/JFS for Linux (см. соответствующие Linux'овые эхи), а со стороны OS/2 - убедиться, что конфиги в %CVSROOT%\CVSROOT не содержат символов возврата каретки (CR), иначе на Linux'овый терминал полезут неразборчивые ругательства. Hеобходимо помнить, что сам репозитарий CVS для OS/2 никаких CR'ов не содержит, таким образом, файлы *,v можно спокойно таскать между различными платформами. CR'ы появляются только в рабочих копиях и в конфигах. Q: Портирую программу из Linux в OS/2. Как синхронизировать исходники? A: Импортируем Linux'овые исходники с ключом "-ko", чтобы не заменять $Id$'ы своими. Разработку OS/2'шной версии ведем в branch'е (cvs tag -b), синхронизируемся по "cvs update -j version1 -j version2", где version1 - предыдущая версия, для которой есть готовый порт, version2 - свежеимпортированная версия, над которой предполагается работать. Q: CVSROOT=:pserver:johndoe@192.168.1.5:c:/cvs - клиент не работает. A: Hеобходимо переписать название хоста в буквенном виде. Hазвание может быть каким угодно, вплоть до несуществующего (т.е. прописанного через %ETC%\hosts).

Содержание > Страница 9


Украинская Баннерная Сеть

Главная  Алфавитный индекс  Справка  Добавить FAQ  E-mail
Новости  Поиск по сайту

Copyright © 2001 - 2002 Olexandr Slobodyan.
Сайт создан в системе uCoz