1

我正在开发一个 iPhone 应用程序,我对一切都很陌生。我正在开发 Mountain Lion OS X 10.8 并使用 xCode v4.5。我的项目需要 JPEG 处理功能,并且我想使用 libjpeg (http://www.ijg.org/) 库。我尝试了几种不同的方法,但有点天真,我不确定如何开始。下载软件包后,我通常使用 ./configure; 制作并安装。现在我在(/usr/local/include)下有(jconfig.h,jerror.h,jmorecfg.h,jpeglib.h),在(/usr/local/lib)下有(libjpeg.a,libjpeg.la)但是我不知道如何在我的 xCode 项目中链接/使用它。任何人都可以将我链接到教程或向我推动正确的方向吗?如果有人成功安装和使用 jpeg 库,请帮助..

4

1 回答 1

3

这有点麻烦,因为您需要为两种架构编译 LibJPEG:ARM 用于 iOS,x86 用于模拟器。

  1. 最好的选择是使用NSImageor CGImage。iOS 上已经有一个 JPEG 库,随系统一起提供,因此您不需要使用 LibJPEG。

  2. 另一种方法是将 LibJPEG 源直接放入您的项目(包括*.c文件)中。这样,它们将针对不同的架构(模拟和部署)正确构建。

  3. 您也可以只为 ARM 构建,然后忘记运行模拟器。

  4. 或者,您可以通过编译两次并将libjpeg.a每次编译的结果库 () 与libtool.

    libtool -static path/to/arm/libjpeg.a path/to/x86/libjpeg.a -o libjpeg.a
    

您可以看到为什么建议使用NSImageor CGImage。最好使用已经安装的库,而不是尝试构建和安装新库。

如何制作一个胖静态库

因为听起来你想以艰难的方式做事,所以这里有一个如何为 i386 和 ppc 架构构建胖静态库的示例。这是在 PowerPC OS X 机器上完成的,如果要为 ARM 和 i386 编译,则必须进行调整。

请注意,您必须指定--host--build进行交叉编译。下面的值对于我的计算机是正确的,但我确信它们对于您的计算机是错误的。

$ cd jpeg-8d
$ mkdir build-ppc build-i386
$ cd 构建-ppc
$ ../configure CFLAGS='-arch ppc -O2 -g' LDFLAGS='-arch ppc' \
        --enable-static --disable-shared
$使-j2
$ cd ../build-i386
$ ../configure CFLAGS='-arch i386 -O2 -g' LDFLAGS='-arch i386' \
        --启用-静态--禁用-共享\
        --build=powerpc-apple-darwin9.8.0 --host=i386-apple-darwin9.8.0
$使-j2
$ 光盘 ..
$ 文件 build-ppc/.libs/libjpeg.a
build-ppc/.libs/libjpeg.a:当前 ar 存档随机库
$ 文件 build-i386/.libs/libjpeg.a
build-i386/.libs/libjpeg.a:当前 ar 存档随机库
$ libtool -static build-*/.libs/libjpeg.a -o libjpeg.a
$ 文件 libjpeg.a
libjpeg.a:具有 2 个架构的 Mach-O 通用二进制文件
libjpeg.a(用于架构 i386):当前 ar 存档随机库
libjpeg.a(用于架构 ppc):当前 ar 存档随机库
于 2012-11-03T21:11:18.947 回答