Собираем GD под Linux
Эта статья относится к серии помоги себе сам, когда в первую очередь смысл ее написания сводится к тому, что-бы описать для себя любимого последовательность четких действий по достижению конкретной цели. Сегодняшняя цель - это установка графической библиотеки GD на Linux системе, использование которой широко применяется в таких инструментах как PHP, rrdtool и других различных приложений работающих с графикой, хотя насчет PHP разработчики настоятельно советуют пользоваться Bundled (встроенной в дистрибутив) версией GD, не знаю почему, но я всегда ставлю более свежие библиотеки и пока проблем с ними не имел.
Большая часть работы типична для обычной сборки продуктов из исходных кодов, но кое-где есть небольшие отклонения. Так-же при описании действий я принимаю во внимание то, что Вы знаете зачем существует такая полезная команда, как ldconfig.
Первым делом проверяем, что для динамической линковки у нас правильно прописаны пути к будущим shared библиотекам. Ищем в файле /etc/ld.so.conf строчку:
/usr/local/lib
Теперь поехали:
Первенцем ставим freetype http://www.freetype.org/
./configure; make; make install
ldconfig
ldconfig -p | grep libfree
libfreetype.so.6 (libc6) => /usr/local/lib/libfreetype.so.6
libfreetype.so (libc6) => /usr/local/lib/libfreetype.so
Ставим fontconfig http://fontconfig.org/release/
./configure; make; make install
ldconfig
ldconfig -p|grep libfontconfig
libfontconfig.so.1 (libc6) => /usr/local/lib/libfontconfig.so.1
libfontconfig.so.1 (libc6) => /usr/lib/libfontconfig.so.1
libfontconfig.so (libc6) => /usr/local/lib/libfontconfig.so
Ставим libpng http://www.libpng.org/pub/png/libpng.html Копируем в корень из директории scripts makefile.linux и переименовываем его в makefile
make; make install
ldconfig
ldconfig -p | grep libpng
libpng12.so.0 (libc6) => /usr/local/lib/libpng12.so.0
libpng12.so (libc6) => /usr/local/lib/libpng12.so
libpng.so.3 (libc6) => /usr/local/lib/libpng.so.3
libpng.so (libc6) => /usr/local/lib/libpng.so
Ставим jpg http://libjpeg.sourceforge.net/
./configure; make; make install; make install-lib
ldconfig
ldconfig -p|grep jpeg
libjpeg.so.62 (libc6) => /usr/lib/libjpeg.so.62
Ставим Postscript Type 1 (T1lib) ftp://sunsite.unc.edu/pub/Linux/libs/graphics/
./configure; make without_doc; make install;
ldconfig
ldconfig -p|grep t1
libt1.so.5 (libc6) => /usr/local/lib/libt1.so.5
libt1.so (libc6) => /usr/local/lib/libt1.so
Ставим gd http://www.libgd.org/
./configure
...
Support for PNG library: yes
Support for JPEG library: yes
Support for Freetype 2.x library: yes
Support for Fontconfig library: yes
Support for Xpm library: no
Support for pthreads: yes
...
Заранее видим, что будет поддерживать GD, а чего нет. Нет X11 поэтому нет xpm (ftp://metalab.unc.edu/pub/Linux/libs/X/!INDEX.html), но оно мне и не нужно (если кто-то из Вас захочет поставить xpm Вам следует познакомиться с imake). Едем далее:
make; make install
ldconfig
ldconfig -p|grep libgd
libgd.so.2 (libc6) => /usr/local/lib/libgd.so.2
libgd.so (libc6) => /usr/local/lib/libgd.so
На этом месте все готово. Теперь, к примеру, можно привязать наши свежие библиотеки из GD к PHP, примерно вот так:
./configure ... --with-gd=/usr/local --with-freetype-dir=/usr/local --with-t1lib=/usr/local ...
Вызываем phpinfo() и в секции GD получаем такую замечательную картинку:
И напоследок еще несколько ссылок на полезные библиотеки: