多年来,我学会了编写自己的资源,但总是把一些过程留给“神秘”。我正在遇到 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如何解决此问题的一般回应也会有所帮助。
答案 0 :(得分:4)
./configure --help
将为您提供configure
脚本支持的选项列表。要查找有关每个选项或特定情况下必须提供的参数的详细信息,您必须阅读特定软件包的安装文档(如果有)。您会随着时间的推移而采用某些惯例,但它们只是惯例。如果你构建了一个相当复杂的包,比如ImageMagick,它会引入许多库依赖关系,并且你使用一个不太常见的平台,比如Mac和手工编译的东西,你可能真的需要在某些情况下深入挖掘。
答案 1 :(得分:1)
在我的Mac上,/usr/X11/lib
包含许多库,特别是libpng.dylib
和libpng.3.44.0.dylib
。你有这些图书馆吗?如果没有,你需要在你的Mac上安装X11,事情可能会更顺利。
我已经下载了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服务器。我不会马上去调查 - 你在很早的阶段就遇到了问题。
如您所见,这是针对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)