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

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.