Рабочая среда К

4.7. Микро-КАКСДЕЛАТЬ: Компилирование KDE 1.1 на SGI Irix 6.x

Крис Стерритт написал следующее (подредактировано для большей наглядности) в comp.windows.x.kde.

  1. Установите Qt 1.42 или выше.

  2. Я устанавливаю KDE для себя (не как root), так что я задаю переменную окружения KDEDIR не как /usr/local, или что-либо другое, что было по умолчанию, а как другой каталог. Я буду использовать это ниже, но вам,возможно, это не нужно. Кроме того, SGI имеет библиотеки 'jpeg' и 'png', но они либо устарели, либо что-то в них сломано. Так что вам придется отыскать исходные тексты libpng и libz (jpeg поставляется с kdesupport); я их обнаружил в RPM-пакетах с исходными текстами в одном из зеркал FTP RedHat.

  3. Возьмите egcs 1.1.1 или выше и скомпилируйте с включенной поддержкой '-fsquangle'. Это нужно, так как ассемблер SGI не может справиться с громадными именами объектов, создаваемыми нормальным g++, и gas, похоже, не работает в SGI. Вам также будет нужно откомпилировать библиотеки gcс, используя этот бинарный файл. Убедитесь, что ваш PATH не содержит другой версии gcc (если она была установлена до этого). Затем, если я делаю g++ -v на выходе получается:
     gcc version egcs-2.91.60 19981201 (egcs-1.1.1 release)

  4. Сделайте
     setenv LDFLAGS " "
    поскольку скрипты 'configure' всегда настаивают на использовании 'g++ -s' при компилировании проверочной программы, что никогда не срабатывает на SGI-машинах.

  5. Распакуйте 'kdesupport' и войдите в его каталог. Запустите его configure c "--prefix" если это вам нужно (если вы не root):
     ./configure --prefix=$KDEDIR

  6. Запустите скрипт (который я привожу ниже) следующим образом:
     find . -name Makefile -exec ../FixMakesSq {} \;
    Это исправляет все строки при компилировании так, что:

    • CXXFLAGS имеет '-fsquangle'.

    • все 'реплицированные' библиотеки (jpeg and png) будут подаваться с полным путем к ним, так что они не будут связаны с "родными" библиотеками SGI.

    Вот скрипт FixMakesSq:
     #!/bin/perl -ni.bak
     if (/cflags\s*=(.*)$/i)
     {
             print "CFLAGS =  -fsquangle $1\n";
     }
     elsif (/cxxflags\s*=(.*)$/i)
     {
             print "CXXFLAGS =  -fsquangle $1\n";
     }
     elsif ((/-lpng/) || (/-ljpeg/))
     {
             if (/^(.*)-lpng(.*)$/)
             {
                     $b4 = $1;
                     $af = $2;
                     print "$b4 /path/to/KDE/libs/libpng.a $af\n";
             }
             if (/^(.*)-ljpeg(.*)$/)
             {
                     $b4 = $1;
                     $af = $2;
                     print "$b4 /path/to/KDE/libs/libjpeg.a $af\n";
             }
     }
     else
     {
             print;
     }

  7. Сделайте:
     make
     make install

  8. Пройдите в каталог с исходным текстом 'libz', сделайте:
     ./configure --prefix=$KDEDIR
     make
     make install

  9. Пройдите в каталог с исходным текстом 'libpng', сделайте:
     ./configure --prefix=$KDEDIR
     make
     make install

  10. Распакуйте 'kdelibs' и войдете в его каталог. Добавьте аргумент '--enable-new-stuff' к ./configure:
     ./configure --prefix=$KDEDIR --enable-new-stuff
     find . -name Makefile -exec ../FixMakesSq {} \;

  11. Найдите 'kprocctrl.cpp', и исправьте Makefile в этом каталоге. Добавьте '-D_LANGUAGE_C_PLUS_PLUS' к строке CXXFLAGS. Это даст правильное определение для сигнальных функций (имеет аргумент 'int).
     make
     make install

  12. Распакуйте 'kdebase' и войдите в его каталог. Сделайте:
     ./configure --prefix=$KDEDIR
     find . -name Makefile -exec ../FixMakesSq {} \;

  13. Исправьте 'memory_sgi.cpp' (сделайте find в каталоге 'kdebase'). Я просто сделал для всей функции #ifdef ... она не компилируется на моей машине и я все-равно никогда не открываю эту часть KPanel :-)
     make
     make install

  14. Распакуйте 'kdeutils'.
     ./configure --prefix=$KDEDIR
     find . -name Makefile -exec ../FixMakesSq {} \;

  15. Найдите 'kcalc_core.cpp' и исправьте его Makefile аналогично тому, как вы это сделали до этого для 'kprocctrl.cpp'.
     make
     make install

  16. Распакуйте 'kdegames', 'kdegraphics', и 'kdetoys' и для каждого войдите в его каталог и сделайте:
     ./configure --prefix=$KDEDIR
     find . -name Makefile -exec ../FixMakesSq {} \;
     make
     make install

  17. Следующий шаг необязателен. Найдите, где находится каталог knotes. Пройдите туда, сделайте 'make clean', затем измените CXXFLAGS в его Makefile. Строка CXXFLAGS имеет '-O2', замените это на '-g'. Затем сделайте 'make' и 'make install'. Я это сделал потому, что на моей машине knotes рушился через несколько минут работы в нем. Тем не менее, когда я перекомпилировал его c '-g' (то есть с поддержкой отладки) вместо '-O2' (оптимизация) все хорошо заработало. Разберитесь в чем дело :-).

Вот и все, теперь вы сможете пользоваться KDE.