ARM-LINUX下一些常用库的移植
一些库在各个项目经常重用.如jpeg,freetype,iconv 等.每次大型项目均会反复重用.因此按照原来项目规范,一般都放在项目libs目录下,但后来发现,每个项目都做重复操作.也完全没有必要.因为现在是将其归纲到一个comm_lib公用信息.
以下是常用库的ARM-Linux移植,我是放在/home/hxy/common_lib 目录下.按到移植规范,输出在 output/arm-linux下,库本身在 libs 下面.
以下是常见库的移植.在这里留作教学和备份用.
通用类
1.zlib库移植
-
下载
-
解压 tar xvzf zlib-1.2.3.tar.gz
-
cd zlib-1.2.3
-
生成Makefile(注意zlib只能静态,动态分开编译,因此要生成两次Makefile和两次编译和安装)
-
-
生成静态库 CC=arm-linux-gcc CPP="arm-linux-gcc -E" AR="arm-linux-ar rc" RANLIB=arm-linux-ranlib ./configure --prefix=$PWD/../../output/arm-linux
-
生成动态库 CC=arm-linux-gcc CPP="arm-linux-gcc -E" AR="arm-linux-ar rc" RANLIB=arm-linux-ranlib ./configure --shared --prefix=$PWD/../../output/arm-linux
-
-
编译 make
-
安装 make install
图像类
1.jpeg库,用于jpeg图像处理
-
ftp://ftp.nz.debian.org/gentoo/distfiles/jpegsrc.v6b.tar.gz
-
解压 tar xvzf jpegsrc.v6b.tar.gz
-
cd jpeg-6b
-
生成Makefile
-
./configure --enable-shared --enable-static --host=arm-linux --prefix=$PWD/../../output/arm-linux
-
-
编译 make
-
安装 make install
-
注意这个库的安装程序有BUG,不会自动创建发布的lib,include,man等,因此要手工创建,要不先把其它库做好,再安装这个库
- mkdir -p /home/hxy/common_lib/output/arm-linux/include
- mkdir -p /home/hxy/common_lib/output/arm-linux/lib
- mkdir -p /home/hxy/common_lib/output/arm-linux/man/man1
-
2.png 用于PNG图像显示
-
-
下载http://prdownloads.sourceforge.net/libpng/libpng-1.4.1.tar.gz?download
-
解压 tar xvjf libpng-1.2.19.tar.bz2
-
cd libpng-1.2.19
-
生成Makefile
-
./configure --host=arm-linux --enable-shared --enable-static --prefix=$PWD/../../output/arm-linux
-
-
编译 make
-
安装 make install
3.tiff库 ,(tiff格式显示)
-
-
下载 http://dl.maptools.org/dl/libtiff/tiff-3.8.2.tar.gz
-
解压 tar xvzf tiff-3.8.2.tar.gz
-
cd tiff-3.8.2
-
生成makefile
-
./configure --host=arm-linux --enable-shared --enable-static --enable-jpeg --enable-zlib --prefix=$PWD/../../output/arm-linux
-
编译 make
-
安装 make install
音频类
2.mad
-
官网 http://www.underbit.com/products/mad/
-
解压 tar xvzf libmad-0.15.1b.tar.gz
-
cd libmad-0.15.1b
-
生成Makefile(标准)
-
./configure --host=arm-linux --enable-shared --enable-static --prefix=$PWD/../../output/arm-linux
-
-
去掉Makefile中-fforce-mem
-
因为arm-linux-gcc不认识这个选项,编译提示 error: unrecognized command line option "-fforce-mem"
-
-
编译make
-
安装 make install
3.id3tag:读取mp3信息
官网 http://www.underbit.com/products/mad/
-
解压 tar xvzf libid3tag-0.15.1b.tar.gz
-
cd libid3tag-0.15.1b
-
生成Makefile(标准)
-
./configure --host=arm-linux --enable-shared --enable-static --prefix=$PWD/../../output/arm-linux
-
编译 make
-
安装 make install
4.ogg 一种音频解码格式
-
-
解压 tar xvzf libogg-1.1.4.tar.gz
-
cd libogg-1.1.4
-
生成Makefile (标准)
-
./configure --host=arm-linux --enable-shared --enable-static --prefix=$PWD/../../output/arm-linux
-
-
编译make
-
安装 make install
文字编码类
1.iconv库 用于文字编码转换
-
主页 :http://www.gnu.org/software/libiconv
-
下载:http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
-
解压 tar xvzf libiconv-1.13.1.tar.gz
-
cd libiconv-1.13.1
-
生成Makefile (标准)
-
./configure --host=arm-linux --enable-shared --enable-static --prefix=$PWD/../../output/arm-linux
-
-
编译make
-
安装 make install
2. freetype:开源高质理字体显示函数库
-
主页:http://www.freetype.org/
-
下载:http://ftp.twaren.net/Unix/NonGNU/freetype/freetype-2.3.11.tar.gz
-
解压 tar xvzf freetype-2.3.11.tar.gz
-
cd freetype-2.3.11
-
生成Makefile (标准)
-
./configure --host=arm-linux --enable-shared --enable-static --prefix=$PWD/../../output/arm-linux
-
-
编译make
-
安装 make install
-
-
SQLite
SQLite是一款轻型的数据库。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
源码地址:http://www.sqlite.org/libnet
libnet是一个小型的接口函数库,主要用C语言写成,提供了低层网络数据包的构造、处理和发送功能。libnet的开发目的是:建立一个简单统一的网络编程接口以屏蔽不同操作系统底层网络编程的差别,使得程序员将精力集中在解决关键问题上
源码地址:https://github.com/sam-github/libnetlibjpeg
libjpeg是一个完全用C语言编写的库,包含了被广泛使用的JPEG解码、JPEG编码和其他的JPEG功能的实现。
源码地址:http://sourceforge.net/projects/libjpeg/files/libevent
Libevent 是一个用C语言编写的、轻量级的开源高性能网络库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,不如 ACE 那么臃肿庞大;源代码相当精炼、易读;跨平台,支持 Windows、 Linux、 *BSD 和 Mac Os;支持多种 I/O 多路复用技术, epoll、 poll、 dev/poll、 select 和 kqueue 等;支持 I/O,定时器和信号等事件;注册事件优先级。
源码地址:https://github.com/nmathewson/Libeventlibcurl
libcurl主要功能就是用不同的协议连接和沟通不同的服务器。 libcurl当前支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传(当然你也可以使用PHP的ftp扩展), HTTP基本表单上传,代理,cookies,和用户认证。
源码地址:http://curl.haxx.se/libiconv
libiconv库为需要做转换的应用提供了一个iconv()的函数,以实现一个字符编码到另一个字符编码的转换。libiconv在系统缺少多种多样的字符编码支持时,提供这样方面的支持。
源码地址:http://www.gnu.org/software/libiconv/mcrypt/libmcrypt
一个功能强大的加密算法扩展库,在保证应用的应用性时,通过该扩展库的加密算法保证安全性
源码地址:http://mcrypt.sourceforge.net/libpng
libpng可用于读写png文件
源码地址:http://libmng.com/pub/png/libpng.htmlfreetype
FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。支持单色位图、反走样位图的渲染。FreeType库是高度模块化的程序库,虽然它是使用ANSI C开发,但是采用面向对象的思想,因此,FreeType的用户可以灵活地对它进行裁剪。
源码地址:http://www.freetype.org/jpegsrc
包含jpeg库,这些库用于读写jpeg文件
源码地址:http://ijg.org/libxml2
libxml是linux平台下解析XML文件的一个基础库,现在很多实用软件都用XML格式的配置文件,所以也有必要学习一下。
源码地址:http://www.xmlsoft.org/zlib
zlib 是一个压缩解压程序库
源码地址:http://www.zlib.net/D-Bus
D-Bus是一个为应用程序间通信的消息总线系统, 用于进程之间的通信。
源码地址:http://www.freedesktop.org/wiki/Software/dbus/pureftpd、bftpd、vsftpd
PureFTPd是一款专注于程序健壮和软件安全的免费FTP服务器软件。源码地址:http://www.oschina.net/p/pure-ftpd
vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。源码地址:http://vsftpd.beasts.org/http://www.oschina.net/p/vsftpd
Bftpd 主旨成为一款高速、小巧而且配置方便的服务器 源码地址:http://sourceforge.net/projects/bftpd/files/bftpd/bftpd-3.2/bftpd-3.2.tar.gz/downloadtinyhttpd、mini_httpd、Lighttpd、apache、nginx
tinyhttpd 是一个不到 500 行的超轻量型 Http Server,用来学习非常不错,可以帮助我们真正理解服务器程序的本质。源码地址:http://sourceforge.net/projects/tinyhttpd/
mini_httpd是一个小型的HTTP Server,功能丰富,作为嵌入式系统的server性能很不错,唯一的不好的地方是代码风格不是很好。源码地址:http://www.acme.com/software/mini_httpd/
Lighttpd是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。源码地址:http://www.lighttpd.net/
apache是世界排名第一的web服务器, 根据netcraft(www.netsraft.co.uk)所作的调查,世界上百分之五十以上的web服务器在使用apache. 源码地址:http://httpd.apache.org/download.cgi
Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。源码地址:http://nginx.org/
其他嵌入式的http server很多,比如shttpd thttpd mathopd appweb goahead boa ,有兴趣的可以自己查文档学习。
---------------------