# 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.