Как установить Каир 1.8.10


12

Пакет libcairo2-devявляется последней версией графической библиотеки Cairo (1.10.2). Есть ли способ установить версию 1.8.10?

Я бегу 11.10, но был бы заинтересован в общем решении, если это возможно.


Не могли бы вы объяснить, почему вы хотите установить старую версию? Установка более ранней общесистемной версии, вероятно, не возможна (некоторые программы могут зависеть от функций более новой версии), но если у вас более узкие требования к более старой версии, то решение может быть возможным.
Джеймс Хенстридж

Лично я очень мало знаю о Каире, но я написал программу, которая ссылается на библиотеку, которая в свою очередь использует Каир для генерации графики. Я сделал большую часть оригинальной разработки на своем Mac, для которой установка в Каире была доступна только через что-то вроде Fink (у которого есть только v1.8.10) ...
Daniel Standage

... Программа также использует OpenMP, и один из параллельных циклов for включает вызовы функций библиотеки Cairo. Программа работает на Ubuntu, когда я запускаю ее на одном процессоре, и работает на Mac для любого количества процессоров. Но когда я запускаю его в Ubuntu с несколькими процессорами, я получаю прерывания, segfaults, glibcs ​​и т. Д.
Daniel Standage

Я понимаю, что переход на v1.8.10 - это не то, что вам нужно для долгосрочного решения, и если бы вы могли изолировать установку, это может быть даже лучше. Я уже распространил программное обеспечение, и я просто хочу иметь временный перерыв, пока я не смогу понять, что на самом деле не так с моей программой.
Даниэль Стендж

Для справки, номера версий для Cairo идут 1.8 -> 1.9 -> 1.10, поэтому версия, включенная в Ubuntu, должна быть в состоянии сделать все, что вы делали в MacOS. Если вы обращаетесь к Cairo только через стороннюю библиотеку, которую вы не модифицируете, вам не нужно беспокоиться о случайном использовании новых функций и нарушении совместимости со старой средой разработки. Если у вас возникла проблема с новой версией, не могли бы вы объяснить, что это такое?
Джеймс Хенстридж

Ответы:


9

Если вы хотите протестировать старую версию Cairo, вы можете встроить ее во временный префикс в своем домашнем каталоге.

Прежде всего, убедитесь, что у вас установлены зависимости сборки Cairo. Вы можете сделать это с помощью следующей команды:

sudo apt-get build-dep cairo

Теперь скачайте и распакуйте старую версию Cairo:

wget http://cairographics.org/releases/cairo-1.8.10.tar.gz
tar xzf cairo-1.8.10.tar.gz
cd cairo-1.8.10

Теперь вы хотите встроить Каир во временный префикс. Я использовал ~/prefixэто несколько раз, но вы можете использовать любой каталог.

./configure --prefix=$HOME/prefix
make
make install

Теперь вам нужно заставить свое программное обеспечение использовать эту версию Cairo. Если программное обеспечение использует pkg-configдля определения своих зависимостей, необходимо только установить следующую переменную среды:

export PKG_CONFIG_PATH=$HOME/prefix/lib/pkgconfig

Если он не используется pkg-config, вам может потребоваться настроить CFLAGSвключение -I$HOME/prefix/includeи LDFLAGSвключение -L$HOME/prefix/lib.

Наконец, для запуска вашей программы с использованием пользовательской версии Cairo вам необходимо настроить динамический компоновщик так, чтобы он искал общие библиотеки в вашем временном префиксе:

export LD_LIBRARY_PATH=$HOME/prefix/lib

Как только это будет установлено, вы можете проверить, что ваша программа ссылается на вашу копию Cairo, используя ldd. Если все выглядит хорошо, все готово.

Убираться

Как только вы закончите с этой временной установкой, очистка довольно проста. Просто сбросьте переменные окружения и удалите префикс временной установки:

unset LD_LIBRARY_PATH
unset PKG_CONFIG_PATH
rm -rf $HOME/prefix

После этого вам может понадобиться перенастроить / перестроить вашу программу, чтобы она снова использовала систему Cairo.


1
Отличная и четкая инструкция, с чистым процессом установки и удаления. Благодарность!
Даниэль Стендж

Как удалить пути включения по умолчанию из $ HOME, чтобы он не использовал файлы по умолчанию cairo
Dau
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.