FAQ KDE - Компилирование KDE 1.1 на SGI Irix 6.x
ОГЛАВЛЕНИЕ
4.7. Компилирование KDE 1.1 на SGI Irix 6.x
Крис Стерритт <mailto:Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.> написал следующее
(подредактировано для большей наглядности) в 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.