20150910_移植SQLite3&MPlayer&curl&openssl



移植SQLite3MPlayercurlopenssl

目标平台:MIPS(Linux)            开发平台:PCUbuntu_64bits_12.04LTS

作者:C.R.Y.                             编写时间:2015.09.10

一、准备工作

      1. 需确保MIPS交叉工具链,并将它所在目录声明进环境变量,或放置于环境变量所在目录中。

        (将mips-linux-gnu设置到PATH环境变量中:

        export PATH=$PATH: /home/wishlist/toolchains/mips-gcc472-glibc216/bin/mips-linux-gnu-

        以上只是设置了临时的环境变量,如果要长期有效,请将该声明写入~/.bashrc中。)

      2. 在输出目录(比如/home/wishlist/out)下建立相应名字的目录(如SQLite3MPlayercurlopenssl),将它们的权限设置为777

      3. 介绍下configure的一点特性:

        ./configure--host=mips-linux-gnu --target=mips-linux --prefix=/home/wishlist/output/curl --enable-static

        大部分configure都支持以下选项,详细情况可执行该目录./configure–help。介绍:

        --host       指定要使用的交叉编译工具链的位置

        --target      指定编译出的程序运行的平台

        --prefix      指定生成文件的位置

        --enable-static  指定生成静态库

        移植SQLite3

        下载、放置SQLite3压缩包(sqlite-3.3.7.tar.gz

        解压

      4. tarxvzf sqlite-3.3.7.tar.gz -C /home/wishlist/workspace_testAgain/——指定解压的路径,可省略第二步)

      5. 将解压出来的整个目录移至操作位置(建议移动至家目录下,可避免环境变量或权限问题)

        配置

      6. 进入解压后的SQLite,配置configure

export config_BUILD_CC=gcc

exportconfig_TARGET_CC=mips-linux-gcc

 

“还是出现如下同样的错误:

checkingfor /usr/include/readline.h... configure: error: cannot check for fileexistence when cross compiling

上面说是要检查交叉编译环境,我可以肯定我的交叉编译环境是正确的,所以我决定欺骗configure,我是这样做的cd/home/sqlite-3.3.6

将该目录下的configure文件的部分内容修改下(这里是根据test"$cross_compiling" = yes && 找到的),  这样可以让configure不去检查你的交叉编译环境。

20420{ (exit 1); exit 1; }; }

改为{(echo 1); echo 1; }; }

20446{(exit 1); exit 1; }; }

改为{(echo 1); echo 1; }; }

——参考自《sqlite-3.3.6编译安装与交叉编译全过程详细记录》

 

执行命令

./configure--host=mips-linux-gnu- --target=mips-linux --prefix=/home/wishlist/output/sqlite3--enable-static

      1. 修改Makefile

        Makefile的第29行的

        TCC= mips-linux-gcc -g -DOS_UNIX=1 -I. -I${TOP}/src

        修改为

        TCC= mips-linux-gnu-gcc -g -DOS_UNIX=1 -I. -I${TOP}/src

        将第110行的

        LTCOMPILE= $(LIBTOOL) --mode=compile $(TCC)

        修改为

        LTCOMPILE= $(LIBTOOL) --tag=CC --mode=compile $(TCC)

         

        P.S.没有指定--tag会产生以下错误:

libtool: compile: unable to infertagged configuration

libtool:compile: specify a tag with `--tag'

没有将TCC修改的话,会产生以下错误:

./libtool:line 1045: mips-linux-gcc: command not found 等等的错误。

      1. make&& make install

        完成后将产生交叉编译完成后的sqlite3目录于/home/wishlist/output中。

        测试是否移植成功

        将交叉编译后的sqlite3复制到MIPS板上,比如放置于根目录下,则先声明:

        exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/sqlite3/lib

        后执行/sqlite3/bin/sqlite3


三、移植MPlayer

(一)下载、放置MPlayer压缩包(MPlayer-1.1.1.tar.xz

(二)解压

同“二(二)”,但解压命令为tarxvJf MPlayer-1.1.1.tar.xz

(三)配置

      1. 进入解压后的MPlayer,配置configure

        修改configure文件,将第2592

        _install_strip="-s"修改为 _install_strip=

        执行命令

        ./configure--cc=mips-linux-gnu-gcc --prefix=/home/wishlist/output/MPlayer--target=mips-linux --as=mips-linux-gnu-as --extra-cflags=-march=mips2

      2. make&& make install

        完成后将产生交叉编译完成后的MPlayer目录于/home/wishlist/output中。

        测试是否移植成功

        /MPlayer/bin/mplayer/Movie_Size.mp3

        ——用MPlayer打开某首音乐(Movie_Size.mp3为测试音乐)


四、移植curl

(一)下载、放置curl压缩包(curl-7.30.0.tar.gz

(二)解压

同“二(二)”

(三)配置

      1. 进入解压后的MPlayer,配置configure

        ./configure--host=mips-linux-gnu --target=mips-linux --prefix=/home/wishlist/output/curl--enable-static

      2. make&& make install

        完成后将产生交叉编译完成后的curl目录于/home/wishlist/output中。

        测试是否移植成功

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/curl/lib

/curl/bin/curlwww.baidu.cn


五、移植openssl

(一)下载、放置openssl压缩包(openssl-1.0.1i.tar.gz

(二)解压

同“二(二)”

(三)配置

      1. 进入解压后的openssl,执行命令

        ./config--prefix=/home/wishlist/output/openssl --cross-compile-prefix=/home/wishlist/toolchains/mips-gcc472-glibc216/bin/mips-linux-gnu-no-shared no-asm

         

        “生成的Makefile,将所有linux-x86_64修改为mips,将-m64都删除”

        ——参考自mutes的《移植openssl-1.0.0emips平台》,ChinaUnix论坛

        地址:http://blog.chinaunix.net/uid-20672257-id-3239249.html

         

      2. make&& make install

        完成后将产生交叉编译完成后的openssl目录于/home/wishlist/output/openssl中。

        备注

        实际使用中,bin/openssl这个可执行文件执行时会先读取ssl/openssl.conf这个配置文件,暂时处理方法:建议在板上建立/home/wishlist/output/openssl/ssl目录,并将我们的openssl目录中的ssl目录复制过去。

        测试是否移植成功

        opensslgenrsa -des3 -out test1.key 1024

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值