ARM開源庫移植例項
libjpeg移植
原始碼下載地址: https://sourceforge.net/projects/libjpeg/files/
解壓 tar xzf libjpeg-turbo-1.2.1.tar.gz
配置 ./configure --prefix=$(pwd)/tmp --host=arm-linux CC=arm-none-linux-gnueabi-gcc --enable-shared --enable-static
編譯安裝 make && make install
安裝完成之後,把庫檔案拷貝到目標板的根檔案系統
cd tmp/lib cp *.so.* ~/omapl138/rootfs/lib -d
由於jpeg解碼需要連結jpeg庫,使用gcc命令的話比較複雜,建議使用makefile來編譯
Makefile 1 INCLUDE=-I /home/wu/arm-application/jpeg_src/libjpeg-turbo-1.2.1/tmp/include 2 3 LIBS=-L /home/wu/arm-application/jpeg_src/libjpeg-turbo-1.2.1/tmp/lib -ljpeg 4 5 all:jpeg-test 6 7 jpeg-test: 8 arm-none-linux-gnueabi-gcc -o jpeg-test jpg2rgb.c $(INCLUDE) $(LIBS) 9 10 clean: 11 rm-rfv jpeg-test
tslib移植
tslib下載地址:https://github.com/kergoth/tslib/releases 從上面github連結上下載1.4版本的,並移植到omapl138目標板上
解壓 tar xzf tslib-1.4.tar.gz
cd tslib
./autogen.sh
生成configure
./autogen.sh
配置,生成Makefile
./configure --host=arm-none-linux-gnueabi- --prefix=$(pwd)/tmp
--enable-debug=no
生成Makefile後,編譯出現fbutils.c:(.text+0x104): undefined reference to `rpl_malloc' 這種錯誤
解決辦法:執行autogen.sh後,修改config.h.in 把裡面的#undef malloc,然後就編譯通過
安裝到原始碼檔案的tmp目錄,生成/bin /etc /lib /include資料夾,並放入相應的檔案
把tmp目錄的檔案拷貝到目標系統
cd tmp
cp * -rf ~/omapl138/rootfs
拷貝完成之後,在目標檔案系統上有相應的庫和測試程式
設定環境變數,把下面的環境變數新增到系統 vi /etc/profile
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
使用命令source /etc/profile 使之生效 就可以使用tslib測試程式啦
lighttpd
原始碼下載地址 http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.30.tar.gz
解壓:
tar -zxvf lighttpd-1.4.30.tar.gz
配置:
1, 在當前目錄建立一個臨時目錄 mkdir tmp
2. 配置 ./configure --prefix=$(pwd)/tmp --host=arm-linux CC=/home/wu/omapl138/cross_compile/arm-2009q1/bin/arm-none-linux-gnueabi-gcc --disable-FEATURE --enable-shared --disable-static --disable-lfs --disable-ipv6 --without-PACKAGE --without-valgrind --without-openssl --without-kerberos5 --without-pcre --without-zlib --without-bzip2 --without-lua
配置過程出現以下錯誤:
configure: error: zlib headers not found, install them or build without --with-zlib
重新用以下命令配置:
./configure --prefix=$(pwd)/tmp --host=arm-linux CC=/home/wu/omapl138/cross_compile/arm-2009q1/bin/arm-none-linux-gnueabi-gcc --disable-FEATURE --enable-shared --disable-static --disable-lfs --disable-ipv6 --without-PACKAGE --without-valgrind --without-openssl --without-kerberos5 --without-pcre --without-zlib --without-bzip2 --without-lua
3. 編譯 安裝
make && make install
安裝完成後將在tmp目錄生成lib sbin share 三個目錄 然後在這個tmp目錄上手動建立如下目錄 cache, cgi-bin config log sockets upload vhosts webpages
將原始碼目錄中的doc/config目錄下的config.d,lighttpd.conf和modules.conf拷貝到安裝目錄tmp目錄中的config目錄下
【1】修改複製過來的lighttpd.conf 1)將16行至20行修改為如下:
16 var.log_root = "/home/wu/arm-application/lighttpd_1.4.30_src/lighttpd-1.4.30/tmp/lo g"
17 var.server_root = "/home/wu/arm-application/lighttpd_1.4.30_src/lighttpd-1.4.30/tmp"
18 var.state_dir = "/home/wu/arm-application/lighttpd_1.4.30_src/lighttpd-1.4.30/tmp"
19 var.home_dir = "/home/wu/arm-application/lighttpd_1.4.30_src/lighttpd-1.4.30/tmp"
20 var.conf_dir = "/home/wu/arm-application/lighttpd_1.4.30_src/lighttpd-1.4.30/tmp/co nfig"
2)將61行和93行修改為如下
var.cache_dir = server_root + "/cache"
server.use-ipv6 = "disable"
- 將104和105行註釋掉,如下
#server.username = "lighttpd"
#server.groupname = "lighttpd"
4)將115行修改為如下
server.document-root = server_root + "/webpages"
5)將127行註釋掉,如下所示:
#server.pid-file = state_dir + "/lighttpd.pid"
6)將152行、158行、191行註釋掉,如下所示:
#include "conf.d/access_log.conf"
#include "conf.d/debug.conf"
#server.network-backend = "linux-sendfile"
7)根據系統資源設定207行和225行的數值,本系統的設定分別如下褐色加粗字型所示:
server.max-fds = 256
server.max-connections = 128
8)註釋掉314-316行
343 $HTTP["url"] =~ "\.pdf$" {
344 server.range-requests = "disable"
345 }
9)373行改成
408 server.upload-dirs = ( "/home/wu/arm-application/lighttpd_src/lighttpd-1.4.51/tmp/uplo ad" )
- 336行修改為:
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".scgi" ,".cgi")
11)88行修改,預設使用80埠先修改8080埠
server.port = 8080
【2】修改安裝目錄下config.d/config/cgi.conf
1)將15至19行這一段配置修改如下(原來的):
15 #cgi.assign = ( ".pl" => "/usr/bin/perl",
16 # ".cgi" => "/usr/bin/perl",
17 # ".rb" => "/usr/bin/ruby",
18 # ".erb" => "/usr/bin/eruby",
19 # ".py" => "/usr/bin/python" )
修改後
15 cgi.assgin=(".cgi"=>"")
16 #cgi.assign = ( ".pl" => "/usr/bin/perl",
17 # ".cgi" => "/usr/bin/perl",
18 # ".rb" => "/usr/bin/ruby",
19 # ".erb" => "/usr/bin/eruby",
20 # ".py" => "/usr/bin/python" )
2)將28行的註釋符去掉
alias.url += ( "/cgi-bin" => server_root + "/cgi-bin" )
編寫一個簡單的html頁面進行測試 index.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4 <title>lighttpd測試</title>
5 </head>
6 <body>
7 <p>輕量級web伺服器lighttpd的編譯及配置(for arm-linux)</p>
8 <hr>
9 <p>測試頁面</p>
10 </body>
11 </html>
將此目錄拷貝到安裝目錄tmp的webpages子目錄中
將安裝目錄tmp拷貝到目標檔案系統中:
目標檔案系統中建立目錄:
mkdir -p /home/wu/arm-application/lighttpd_1.4.30_src/lighttpd-1.4.30/
主機中拷貝到nfs目錄:
cp -rd tmp/ /home/wu/arm-application/lighttpd_1.4.30_src/lighttpd-1.4.30/
開啟目標機的控制檯,掛載nfs啟動,使用如下目錄啟動web伺服器
cd /home/wu/arm-application/lighttpd_1.4.30_src/lighttpd-1.4.30/sbin
啟動web伺服器
./lighttpd -f ../config/lighttpd.conf
現在web伺服器搭建完成,使用cgi的時候出現了問題,發現必須要安裝pcre這個庫 最新版下載地址:https://sourceforge.net/projects/pcre/files/latest/download
解壓
unzip pcre2-10.32.zip
配置
cd pcre2-10.32
./configure --prefix=$(pwd)/tmp --host=arm-linux CC=/home/wu/omapl138/cross_compile/arm-2009q1/bin/arm-none-linux-gnueabi-gcc
編譯,安裝
make && make install