基本的UNIX configure / make / sudo make install问题

时间:2011-05-18 19:25:00

标签: macos makefile autoconf automake

多年来,我学会了编写自己的资源,但总是把一些过程留给“神秘”。我正在遇到 bitch 一段时间 ImageMagick 及其无数的依赖项在PowerPC Mac OS X服务器上正常运行。

在为./compile设置标志时,通常会发现可以设置的各种选项(标志)以及每种选项的描述?!?

例如,在libwmf我正在使用的情况下:

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

......但不是真的知道每个国旗的作用。现在我遇到了 png 兼容性问题,并希望找出install script--with-png=/usr/X11指定{{1}}的原因,我正在关注...但找不到任何问题文档等。任何帮助?

即使对UNIX Guru如何解决此问题的一般回应也会有所帮助。

3 个答案:

答案 0 :(得分:4)

./configure --help将为您提供configure脚本支持的选项列表。要查找有关每个选项或特定情况下必须提供的参数的详细信息,您必须阅读特定软件包的安装文档(如果有)。您会随着时间的推移而采用某些惯例,但它们只是惯例。如果你构建了一个相当复杂的包,比如ImageMagick,它会引入许多库依赖关系,并且你使用一个不太常见的平台,比如Mac和手工编译的东西,你可能真的需要在某些情况下深入挖掘。

答案 1 :(得分:1)

在我的Mac上,/usr/X11/lib包含许多库,特别是libpng.dyliblibpng.3.44.0.dylib。你有这些图书馆吗?如果没有,你需要在你的Mac上安装X11,事情可能会更顺利。


MacOS X for 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 

有些测试失败了 - 我希望那是因为我当时并没有在机器上运行X11服务器。我不会马上去调查 - 你在很早的阶段就遇到了问题。


MacOS X for PowerPC

如您所见,这是针对Intel x86 / 64上的Snow Leopard(10.6.7)。如果您在PowerPC上运行Leopard(10.5.x),您可能有一个较旧的XCode和库等,但如果您在计算机上安装了XCode并且安装了X11,则配置过程不起作用将会令人惊讶。 / p>

答案 2 :(得分:0)

解决有关调用中标志的问题:

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

一般来说,你无法确定每个旗帜的作用,因为 包的维护者可以完全自由地让标志做任何事情 他们要。有一些惯例,但很多都不太好 包维护者理解,所以你不能完全依赖它们。 通常,--with和--without仅用于确定 要编译的功能。例如,如果你没有libexpat 安装后,你可以设置--without-expat来完成构建,否则会失败。 有人会怀疑包的默认值是尝试 使用某些需要libexpat的功能构建,以及 如果libexpat不存在,configury将失败,因此您进行设置 --without-expat关闭这些功能。

带参数的--with-png选项是IMO完全的 不值得信任的kludge。我从来没有见过它的包裹 实际上有效。通常,所有configure脚本都可以 取你的/ 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)