环境: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. Celery 分布式任务队列入门

    一.Celery介绍和基本使用 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery ...

  2. MutationObserver 监听DOM树变化

    1 概述 Mutation observer 是用于代替 Mutation events 作为观察DOM树结构发生变化时,做出相应处理的API.为什么要使用mutation observer 去代替 ...

  3. RGB颜色参考

    实色效果 英文名称 R.G.B 16色 实色效果 英文名称 R.G.B 16色   Snow 255 250 250 #FFFAFA   PaleTurquoise1 187 255 255 #BBF ...

  4. [py]python内存管理

    Python深入06 Python的内存管理 堆栈内存 - 堆内存 对象一般就是开辟在堆上的结构体: 堆内存用于提供 引用数据类型存储值 对象存储的是属性名和属性值 函数存储的是函数体代码字符串 函数 ...

  5. 接口自动化测试框架搭建 – Java+TestNG 测试Restful service

    接口自动化测试 – Java+TestNG 测试 Restful Web Service 关键词:基于Rest的Web服务,接口自动化测试,数据驱动测试,测试Restful Web Service, ...

  6. Look for the Air Jordan 32 in full family sizing

    Following the release of the 'Rosso Corsa' colorway, Jordan Brand is now set to officially launch th ...

  7. 软件包管理:rpm命令管理-包命名与依赖性

    rpm包的管理主要有两种方法:一种是rpm命令管理另一种是yum在线管理 注意软件包没有扩展名,写上只是为了好看,便于识别而已. 注意区别包名,包全名.之所以要区分,就是因为有些命令十分挑剔,需要跟正 ...

  8. ts实战项目启动中遇到的问题

    项目链接:https://github.com/Jiasm/typescript-example 储备知识须知: sequelize入门篇 : 依照README执行以下操作: npm i brew s ...

  9. Django初级手册5-自动化测试

    什么是自动化测试 每次更新完系统后,可自动进行测试,而不是手工从头测试一遍: 从长远和全局的角度看,测试能节约我们的时间: 测试是一种积极的行为,它能预防问题,而不仅仅是识别问题: 测试有助于代码美观 ...

  10. String源码详解

    一.基本概念. 1.继承实现关系.因为被final修饰,因此是不可继承的String类,避免被他人继承后修改.实现了三个接口.可序列.可比较,有序.几个String兄弟类 2.本质就是字符数组,同时, ...