Базовый UNIX configure / make / sudo make install вопрос - PullRequest
0 голосов
/ 18 мая 2011

За долгие годы я научился собирать свой собственный источник, но всегда оставлял часть процесса "загадкой". Я сталкиваюсь с сукой того времени, когда ImageMagick и его многочисленные зависимости работают корректно на PowerPC Mac OS X Server.

При установке флагов для ./compile где обычно раскрываются различные опции (флаги), которые можно установить, и описания того, что каждый из них делает?!?

Например, в случае libwmf я использую:

./configure --without-expat --with-xml --with-png=/usr/X11

... но на самом деле не знаю, что делает каждый флаг. Теперь у меня проблема совместимости png и я хочу выяснить, почему в сценарий установки указывается флаг --with-png=/usr/X11 Я слежу ... но не могу найти документация и т. д. Любая помощь?

Даже общий ответ того, как UNIX Guru подходит к этой проблеме, был бы полезен.

Ответы [ 3 ]

4 голосов
/ 19 мая 2011

./configure --help предоставит вам список опций, которые поддерживает скрипт configure. Чтобы узнать подробности о каждой опции или аргументах, которые вы должны предоставить в конкретных случаях, вам нужно будет прочитать документацию по установке конкретного пакета, если он есть. Существуют определенные условные обозначения, которые вы будете использовать с течением времени, но это всего лишь условные обозначения. Если вы создаете довольно сложный пакет, такой как ImageMagick, который использует десятки библиотечных зависимостей, и вы используете редко встречающуюся платформу, такую ​​как Mac, с компилируемыми вручную вещами, вам, возможно, действительно придется копать глубоко и усердно в некоторых случаях.

1 голос
/ 19 мая 2011

На моем Mac /usr/X11/lib содержит много библиотек, включая, в частности, libpng.dylib и libpng.3.44.0.dylib.У вас есть эти библиотеки?Если нет, то вам нужно установить X11 на ваш Mac, и, скорее всего, все пройдет гладко.


MacOS X для Intel

Я скачал ImageMagick 6.6.9-9 и настроил, собрал и проверил (но не установил) его с минимальными проблемами.У меня есть XCode 4 на моей машине - и единственная специальная опция, которую я использовал с ./configure, была:

CC=/usr/bin/gcc ./configure

, чтобы гарантировать, что он подхватил GCC, предоставленный системой (4.2.1), а не мою частную версиюGCC 4.6.0.(Тест конфигурации не удалось - для sizeof(off_t) - из-за проблемы с библиотекой. Использование компилятора системы C позволило избежать этой проблемы.) Распечатка конфигурации ImageMagick:

ImageMagick is configured as follows. Please verify that this configuration
matches your expectations.

Host system type: x86_64-apple-darwin10.7.0
Build system type: x86_64-apple-darwin10.7.0

                  Option                        Value
-------------------------------------------------------------------------------
Shared libraries  --enable-shared=yes       yes
Static libraries  --enable-static=yes       yes
Module support    --with-modules=no     no
GNU ld            --with-gnu-ld=no      no
Quantum depth     --with-quantum-depth=16   16
High Dynamic Range Imagery
                  --enable-hdri=no      no

Delegate Configuration:
BZLIB             --with-bzlib=yes      yes
Autotrace         --with-autotrace=no       no
Dejavu fonts      --with-dejavu-font-dir=default    none
DJVU              --with-djvu=yes       no
DPS               --with-dps=yes        no
FFTW              --with-fftw=yes       no
FlashPIX          --with-fpx=yes        no
FontConfig        --with-fontconfig=yes     no
FreeType          --with-freetype=yes       yes
GhostPCL          None              pcl6 (unknown)
GhostXPS          None              gxps (unknown)
Ghostscript       None              gs (unknown)
Ghostscript fonts --with-gs-font-dir=default    none
Ghostscript lib   --with-gslib=no       no
Graphviz          --with-gvc=yes        no
JBIG              --with-jbig=yes       no
JPEG v1           --with-jpeg=yes       no (failed tests)
JPEG-2000         --with-jp2=yes        no
LCMS v1           --with-lcms=yes       no
LCMS v2           --with-lcms2=yes      no
LQR               --with-lqr=yes        no
LZMA              --with-lzma=yes       no
Magick++          --with-magick-plus-plus=yes   yes
OpenEXR           --with-openexr=yes        no
PERL              --with-perl=no        no
PNG               --with-png=yes        yes
RSVG              --with-rsvg=yes       no
TIFF              --with-tiff=yes       no
WEBP              --with-webp=yes       no
Windows fonts     --with-windows-font-dir=  none
WMF               --with-wmf=yes        no
X11               --with-x=         yes
XML               --with-xml=yes        yes
ZLIB              --with-zlib=yes       yes

X11 Configuration:
      X_CFLAGS        = 
      X_PRE_LIBS      = -lSM -lICE
      X_LIBS          = -L/usr/X11/lib -R/usr/X11/lib
      X_EXTRA_LIBS    = 

Options used to compile and link:
  PREFIX          = /usr/local
  EXEC-PREFIX     = /usr/local
  VERSION         = 6.6.9
  CC              = /usr/bin/gcc -std=gnu99 -std=gnu99
  CFLAGS          = -D_THREAD_SAFE -D_THREAD_SAFE -pthread -fopenmp -g -O2 -Wall -D_THREAD_SAFE -pthread
  CPPFLAGS        = -I/usr/local/include/ImageMagick
  PCFLAGS         = -fopenmp
  DEFS            = -DHAVE_CONFIG_H
  LDFLAGS         = -L/usr/X11/lib -R/usr/X11/lib
  MAGICK_LDFLAGS  = -L/usr/local/lib -L/usr/X11/lib -R/usr/X11/lib
  LIBS            = -lMagickCore -lfreetype -lpng -lXext -lXt -lSM -lICE -lX11 -lbz2 -lxml2 -lz -lm -lgomp -lclparser -Wl,-framework,OpenCL -L/System/Library/Frameworks/OpenCL.framework/Versions/A/Libraries -lm -lpthread 
  CXX             = g++
  CXXFLAGS        = -g -O2 -D_THREAD_SAFE -pthread
  FEATURES        = OpenMP 

Некоторые из тестов не пройдены - Iожидайте, что это было потому, что на тот момент у меня не было сервера X11 на машине.Я не собираюсь сразу заниматься расследованием - у вас проблемы на более ранней стадии.


MacOS X для PowerPC

Как видите, это для Snow Leopard (10.6.7) на Intel x86 / 64.Если вы работаете с Leopard (10.5.x) на PowerPC, возможно, у вас более старый XCode, библиотеки и т. Д., Но было бы удивительно, если бы процесс настройки не работал, если у вас на компьютере установлен XCode - и установлен X11.

0 голосов
/ 24 мая 2011

На ваш вопрос о флагах в вызове:

./configure --without-expat --with-xml --with-png=/usr/X11

В общем, вы не можете быть уверены, что делает каждый флаг, потому что сопровождающий пакета полностью свободен, чтобы флаги делали что угодно они хотят. Есть определенные соглашения, но многие не очень хорошо понятны сопровождающим пакета, поэтому вы не можете полностью полагаться на них. Как правило, --with и --without просто используются для определения какие функции для компиляции. Например, если у вас нет libexpat Установив, вы можете установить --without-expat для завершения сборки, которая в противном случае потерпела бы неудачу. Можно было бы предположить, что по умолчанию для пакета делается попытка построить с определенными функциями, которые требуют libexpat, и configury не удастся, если libexpat отсутствует, поэтому вы устанавливаете --without-expat, чтобы отключить эти функции.

Опция --with-png с аргументом, IMO, полностью ненадежный кладж. Я никогда не видел пакет, где это на самом деле работает. Как правило, все настройки скрипта это взять ваш аргумент / usr / X11 и добавить его (с "-L" подготовлено) к LDFLAGS. Идея в том, что это приведет к компоновщик для использования /usr/X11/libpng.so, а не какой-либо другой версия libpng, но простой факт заключается в том, что если вы есть libpng где-нибудь еще в вашей системе и что другое местоположение находится в ваших LDFLAGS, оно будет использоваться. В других слова, если у вас есть /usr/lib/foo.so и /usr/lib/bar.so и /usr/other/lib/foo.so и /usr/other/lib/bar.so, просто нет возможности использовать /usr/lib/foo.so и /usr/lib/other/bar.so если не считать удаления одной из библиотек. Вместо того, чтобы указывать путь в качестве аргумента --with-png, вы, вероятно, лучше выключить "--with-png LDFLAGS = '- L / path -L / path2'" или просто убедитесь, что ваша система построена так, что желаемые пути искал по компоновщику. (например, укажите пути в /etc/ld.so.conf или в /etc/ld.so.conf.d)

...