环境:ubuntu16.04

交叉编译器版本号:4.8.3

在编译之前要编译以下其依赖的软件或库:freetype,libpng,libxml2,libtiff,libjpeg,zlib,graphviz

zlib库

1.tar xvf zlib-1.2.11.tar.xz

2.export CC=arm-linux-gnueabi-gcc

3.export AR=arm-linux-gnueabi-ar

4.mkdir build

5.cd build

6.   ../configure --prefix=$PWD/_install

7.make

8.make install

libtiff没有依赖,使用autoconf生成configure脚本,那么直接编译libtiff

1.wget http://download.osgeo.org/libtiff/tiff-4.0.8.tar.gz

2.tar -xvf tiff-4.0.8.tar.gz

3.cd tiff-4.0.8

4.autoconf

5.export CC=arm-linux-gnueabi-gcc

6.export AR=arm-linux-gnueabi-ar

7.mkdir compile

8.cd compile

9.   ../configure --prefix=$PWD/_install --host=arm-linux-gnueabi

10.make

11.make install

libjpeg没有依赖,使用autoconf生成configure脚本

1.wget www.ijg.org/files/jpegsrc.v9b.tar.gz

2.tar xvf jpegsrc.v9b.tar.gz

3.cd jpeg-9b/
4.autoconf
5.mkdir build

6.   ../configure --prefix=$PWD/_install --host=arm-linux-gnueabi

7.make

8.make install

libpng依赖于zlib,使用autoconf生成configure脚本

1.wget ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng16/libpng-1.6.32.tar.xz

2.tar xvf libpng-1.6.32.tar.xz

3.cd libpng-1.6.32

4.mkdir build

5.cd build

6.   ../configure --prefix=$PWD/_install  LIBS=-L/home/jello/zlib-1.2.11/build/_install/lib CPPFLAGS=-I/home/jello/zlib-1.2.11/build/_install/include --host=arm-linux-gnueabi

7.make

8.make install

libxml2依赖于zlib,configure由autoconf生成,配置项--without-python

1.axel ftp://xmlsoft.org/libxml2/libxml2-2.9.4.tar.gz

2.tar xvf libxml2-2.9.4.tar.gz

3.cd libxml2-2.9.4

4.mkdir build

5.cd build

6. ../configure --prefix=$PWD/_install LIBS=-L/home/jello/zlib-1.2.11/build/_install/lib CPPFLAGS=-I/home/jello/zlib-1.2.11/build/_install/include --host=arm-linux-gnueabi --without-python
7.make
8.make install

freetype依赖于zlib,libpng

1.wget nongnu.askapache.com/freetype/freetype-2.6.5.tar.gz

2.tar xvf freetype-2.6.5.tar.gz

3.cd freetype-2.6.5

4.mkdir build

5.cd build

6. export LDFLAGS="-L/home/jello/zlib-1.2.11/build/_install/lib -L/home/jello1/libpng-1.6.32/build/_install/lib"

7.export CFLAGS="-I/home/jello/zlib-1.2.11/build/_install/include -I/home/jello/libpng-1.6.32/build/_install/include"
8.最重要的一步:还记得刚安装好的libpng库吗?现在需要它的帮助,进入它的安装目录吧,笔者的在/home/jello/libpng-1.6.32/build/__install下,所以进入其lib目录:
cd /home/jello/libpng-1.6.32/build/__install/lib

接着再创建一个软链接,链接到库libpng16.so.16.32.0

ln -s libpng12.so libpng16.so.16.32.0

好了这一步很关键,如果不做这一步,会提示找不到-lpng12,也就是找不到库文件libpng12.so那么回到之前的build目录吧

9. ../configure --prefix=$PWD/__install --host=arm-linux-gnueabi

10.make

11.make install

graphviz 不需要编译此软件,只需要交叉编译其中的3个库即可,libcdt.so libcgraph.so libgvc.so,编译imagemagick需要这三个库及及其头文件路径

1.wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.40.1.tar.gz

2. tar xvf graphviz-2.40.1.tar.gz

3. cd graphviz-2.40.1

4.mkdir build

5.cd build

6.export CC=arm-linux-gnueabi-gcc

7.export AR=arm-linux-gnueabi-ar

8.  ../configure --prefix=$PWD/__install --host=arm-linux-gnueabi

9.make (会有错误信息,不用管,因为在这个过程中会运行编译好的arm程序,但当前是pc机,因此不能运行,故报错)

10.make install (会有错误信息,不用管,我们只需要生成的那三个库和头文件就可以了)

准备已经妥当,开始交叉编译imagemagick

1.获取源码:

git clone https://github.com/ImageMagick/ImageMagick.git

2.指定库和头文件的路径,这里就是为了保证在交叉编译时找到正确的库!

export CFLAGS="-I/home/jello/freetype-2.6.5/build/_install/include -I/home/jello/freetype-2.6.5/build/_install/include/freetype2 -I/home/jello/libpng-1.6.32/build/_install/include -I/home/jello/tiff-4.0.8/compile/_install/include -I/home/jello/jpeg-9b/build/_install/include -I/home/jello/libxml2-2.9.4/build/_install/include -I/home/jello/libxml2-2.9.4/build/_install/include/libxml2 -I/home/jello/zlib-1.2.11/build/_install/include -I/home/jello/graphviz-2.40.1/build/_install/include/graphviz"

export LDFLAGS="-L/home/jello/freetype-2.6.5/build/_install/lib -L/home/jello/libpng-1.6.32/build/_install/lib -L/home/jello/tiff-4.0.8/compile/_install/lib -L/home/jello/jpeg-9b/build/_install/lib -L/home/jello/libxml2-2.9.4/build/_install/lib -L/home/jello/zlib-1.2.11/build/_install/lib -L/home/jello/graphviz-2.40.1/build/_install/lib"

3.cd ImageMagick

4.mkdir build

5.cd build

6. ../configure --prefix=$PWD/__install --disable-installed --without-perl --without-x --without-fpx --without-wmf --disable-openmp --host=arm-hisiv400-linux-gnueabi

7.在当前目录项会生成Makefile文件,修改其中的CFLAGS,笔者生成的Makefile文件中的CFLAGS如下:

CFLAGS = -I/usr/include/libxml2 -I/usr/include/libpng12 -I/usr/include/graphviz -I/usr/include/freetype2   -I/home/jello/freetype-2.6.5/build/_install/include -I/home/jello/freetype-2.6.5/build/_install/include/freetype2 -I/home/jello/libpng-1.6.32/build/_install/include -I/home/jello/tiff-4.0.8/compile/_install/include -I/home/jello/jpeg-9b/build/_install/include -I/home/jello/libxml2-2.9.4/build/_install/include -I/home/jello/libxml2-2.9.4/build/_install/include/libxml2 -I/home/jello/zlib-1.2.11/build/_install/include -I/home/jello/graphviz-2.40.1/build/_install/include/graphviz -Wall -fexceptions -pthread -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16

将其中含有/usr/include的路径删掉,笔者删除后如下:

CFLAGS = -I/usr/include/graphviz -I/usr/include/freetype2   -I/home/jello/freetype-2.6.5/build/_install/include -I/home/jello/freetype-2.6.5/build/_install/include/freetype2 -I/home/jello/libpng-1.6.32/build/_install/include -I/home/jello/tiff-4.0.8/compile/_install/include -I/home/jello/jpeg-9b/build/_install/include -I/home/jello/libxml2-2.9.4/build/_install/include -I/home/jello/libxml2-2.9.4/build/_install/include/libxml2 -I/home/jello/zlib-1.2.11/build/_install/include -I/home/jello/graphviz-2.40.1/build/_install/include/graphviz -Wall -fexceptions -pthread -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16

8.make

9.make install

ok完结

ubuntu下交叉编译imagemagick的更多相关文章

  1. ubuntu下交叉编译lftp

    一.背景: lftp依赖于ncurses,readline和gnutls 二.准备工作 2.1交叉编译ncurses 2.1.1获取ncurses源码 wget ftp://ftp.invisible ...

  2. ubuntu下交叉编译ffmpeg

    环境:ubuntu16.04 交叉编译器版本:4.8.3 依赖x264,lame x264: 1.wget ftp://ftp.videolan.org/pub/x264/snapshots/last ...

  3. ubuntu 下交叉编译环境的搭建

    1. 安装标准的C开发环境,由于Linux安装默认是不安装的,所以需要先安装一下(如果已经安装好的话,就可以免去这一步了): #sudo apt-get install gcc g++ libgcc1 ...

  4. ubuntu下交叉编译windows c程序

    简介 采用mingw32可以在linux下直接编译c程序输出为windows下的exe程序或dll链接库. 个人编译的纯c程序(不含winapi),主要是c99程序,通常采用gcc/cc编译调试后,再 ...

  5. ubuntu下交叉编译mono

    环境:ubuntu16.04 wget download.mono-project.com/sources/mono/mono-4.8.1.0.tar.bz2 配置: CC=arm-linux-you ...

  6. imagemagick 之 Fred's ImageMagick Scripts 在Ubuntu 下的实践

    Fred's ImageMagick Scripts 官网:http://www.fmwconcepts.com/imagemagick/index.php Windows 10 (64-bit) u ...

  7. 在Ubuntu下安装imx6linux系统的交叉编译环境遇到的问题总结

    这段时间一直忙于手上的嵌入式项目,可以说自己从嵌入式的菜鸟一点点的入门了,关于嵌入式和imx6核心板的开发有了一点的了解,尤其是对于板子环境的搭建.硬件的开发,搭建环境,是一个很大的工程量,也是很重要 ...

  8. Windows下将ImageMagick移植到Android平台

    Windows下将ImageMagick移植到Android平台 原文链接  http://www.pedant.cn/2014/06/18/imagemagick-ported-android/ I ...

  9. Ubuntu下录制和制作Gif图片--实战版

    1.背景 ubuntu下,写文章的时候,经常用到Gif图片,这个自己怎么制作呢? 网上查了一下资料,大致的流程就是:安装 录屏软件(kazam) 和 视频 转 Jpeg 的工具(mplayer) ,使 ...

随机推荐

  1. CentOs7 安装最新版的Git

    最近打算研究下Git并投入是用,当然要从安装开始了. 服务器的系统是CenterOs7,这个系统和之前的版本还些使用的不同,慢慢习惯吧. 安装方法有两种: 一.yum命令安装,此方法简单,并且会自动安 ...

  2. 菜鸟教程之工具使用——Git的基本使用

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/liushuijinger/article/details/37569907 Git是进来比較火的版本 ...

  3. Redis的五种数据结构的内部编码

    type命令实际返回的就是当前键的数据结构类型,它们分别是:string(字符串).hash(哈希). list(列表).set(集合).zset(有序集合),但这些只是Redis对外的数据结构. 实 ...

  4. [LeetCode] 198. House Robber _Easy tag: Dynamic Programming

    You are a professional robber planning to rob houses along a street. Each house has a certain amount ...

  5. iOS 开发笔记-plist使用

    1.创建一个plist 2.填写为ImageList.plist 3.填入数据 4.完成 加载代码: @interface UYViewController () //图片信息的数组 @propert ...

  6. linq判断一个枚举的Name是否存在

    比如,枚举如下: [Serializable] public enum PayType : int { /// <summary> /// AAA /// </summary> ...

  7. codefirst configuration

    codefirst 书写配置类,用于entity与数据库中表或view映射 1.对应表或视图都用this.ToTable("SimpleCompanyLoanView", &quo ...

  8. 解决fiddler不能抓取eclipse发出接口请求的问题

    使用eclipse执行接口时,发现在fiddler里面抓不到这些请求. 网上找了很多资料都是让在Eclipse 中设置:Windows > Preferences > Java > ...

  9. python+Django框架运用(一)

    Django 介绍: django是一个采用Python语言开发的开源框架,2005年发布.早期是做新闻以及内容管理的网站的,提供了非常强大的后管理系统. django官网:https://www.d ...

  10. 【转】Java中Synchronized的用法

    <编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程>一文详细讲述了线程.进程的关系及在操作系统中的表现,这是多线程学习必须了解的基础.本文将接着讲一下Java线程同步中的一 ...