FAQ KDE
Страница 7. Компилирование KDE 1.1 на SGI Irix 6.x


4.7.  Компилирование KDE 1.1 на SGI Irix 6.x

Крис Стерритт <mailto: Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script > написал следующее
(подредактировано для большей наглядности) в 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 или выше и скомпилируйте с включенной
   поддержкой громадными именами объектов, создаваемыми нормальным
   g++, и gas, похоже, не работает в SGI. Вам также будет нужно
   откомпилировать библиотеки gcс, используя этот бинарный файл.
   Убедитесь, что ваш PATH не содержит другой версии gcc (если она
   была установлена до этого). Затем, если я делаю g++ -v на выходе
   получается:
     gcc version egcs-2.91.60 19981201 (egcs-1.1.1 release)
4. Сделайте
     setenv LDFLAGS " "
поскольку скрипты 'configure' всегда настаивают на использовании
срабатывает на 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' и войдете в его каталог. Добавьте аргумент
     ./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 аналогично тому,
   как вы это сделали до этого для
     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.
4.8.  Что я могу сделать?  Установка RPM-файлов с SuSe YaST выводит из
строя базу данных rpm
Если вы получили на выходе
        error -2 reading header: Unknown error
Вы должны обновить rpm:
     rpm -U ftp://ftp.suse.com/pub/suse_update/suse51/rpm/rpm.rpm
и вы также должны обновить YaST
     rpm -U ftp://ftp.suse.com/pub/suse_update/suse51/a1/yast.rpm

Пакеты, которые были созданы с использованием rpm-2.4.12 не могут быть
установлены некоторыми старыми версиями rpm.  В основном это случается
с пользователями дистрибутива Linux SuSe.  Их дистрибутив версии 5.0 и
выше поставляется с rpm-2.4.1
Вы можете узнать версию вашего rpm используя:
     rpm -qi rpm

4.9.  Должен ли я удалить старую версию xyz перед установкой новой?

В принципе это необязательно. RPM и DEB-пакеты должны быть способны
сами разбираться во всех зависимостях.
Если вы компилируете исходные тексты сами, вам лучше убедиться, что вы
компилируете пакеты KDE одной и той же версии. И если вы
устанавливаете новую версию, убедитесь, что прежде всего вы
компилируете и устанавливаете kdesupport, потом kdelibs, затем
kdebase.
Старайтесь избегать установления двух (или более, естественно) версий
KDE параллельно. Так может случиться, если вы задали для разных версий
разные корневые каталоги. Результаты могут быть непредсказуемы. То же
самое справедливо, если вы имеете разные версии Qt, установленные в
одно и тоже время. Это может легко случиться, если вы уже имели старую
версию Qt, установленную с дистрибутивом Linux.

 
« Предыдущая статья   Следующая статья »