小言_互联网的博客

MT7628平台上编译移植Amazon S3

333人阅读  评论(0)

最近项目中用到了云存储上传照片和视频片段,用的是Amazon S3。Amazon S3全称是Amazon Simple Storage Service。Amazon S3(Amazon Simple Storage Service),是互联网存储解决方案。该服务旨在降低开发人员进行网络规模级计算的难度。

Amazon S3 提供了一个简单的Web服务接口,可用于随时在Web上的任何位置存储和检索任何数量的数据。

Amazon S3 特意内置了着重于简易性和稳健性的最小功能集。以下是 Amazon S3 服务的一些优势:

    创建存储桶 – 创建和命名存储数据的存储桶。存储桶是 Amazon S3 中用于数据存储的基础容器。

    在存储桶中存储数据 – 在存储桶中存储无限量的数据。可将所需数量的对象上传到 Amazon S3 存储桶。每个对象可包含最多 5TB的数据。使用开发人员分配的唯一键值存储和检索每个对象。

    下载数据 – 下载您的数据或允许其他人下载。随时下载您的数据或允许其他人执行相同的操作。

    权限 - 对于要在您的 Amazon S3 存储桶中上传或下载数据的其他人员,您可授予其访问权限或拒绝其访问。将上传和下载的许可授予3种类型的用户。身份验证机制可帮助确保数据安全,以防未授权访问

    标准接口 – 使用标准的REST接口(SOAP接口已弃用),它们可与任何 Internet 开发工具包搭配使用

 

下面把编译移植的过程整理记录如下:

一、从GitHub上下载S3源码包

git clone https://github.com/bji/libs3.git

注:Amazon S3编译过程中依赖几个第三方库,如下

    curl、openssl、xml2、iconv、zlib

需要先把它所依赖的这些第三方库编译通过后,再对S3进行编译。

 

二、编译移植第三方依赖库

1、编译openssl

下载地址:http://distfiles.macports.org/openssl/

我使用的版本是:openssl-1.0.2q.tar.gz

tar -xvf openssl-1.0.2q.tar.gz

cd openssl-1.0.2q

./config shared --prefix=/work/MT7628/AmazonS3/libopenssl-1.0.2q no-asm os:mipsel-linux compiler:mipsel-buildroot-linux-uclibc-gcc

./config shared —prefix=/work/MT7628/AmazonS3/libopenssl-1.0.2q no-asm

make depend

修改Makefile如下:

(1)、把所有的linux-x86_64修改为mipsel-linux

(2)、指定交叉编译工具链:

    CC= mipsel-buildroot-linux-gcc

    AR= mipsel-buildroot-linux-ar $(ARFLAGS) r

    RANLIB= /opt/buildroot-gcc463/usr/bin/mipsel-buildroot-linux-uclibc-ranlib

    NM= mipsel-buildroot-linux-uclibc-nm

    MAKEDEPPROG= mipsel-buildroot-linux-uclibc-gcc

(3)、删除 -m64 (共两处)

make

make install

 

2、编译curl

下载地址:https://curl.haxx.se/download/

我使用的版本是:curl-7.39.0.tar.gz

tar -xvf curl-7.39.0.tar.gz

cd curl-7.39.0

./configure --build=x86_64-linux-gnu --host=mipsel-buildroot-linux-uclibc --prefix=/work/MT7628/AmazonS3/libcurl-7.39.0 CC=mipsel-buildroot-linux-uclibc-gcc —with-ssl

make

make install

 

3、编译xml2

下载地址:http://xmlsoft.org/sources/

我使用的版本是:libxml2-2.9.1.tar.gz

tar -xvf libxml2-2.9.1.tar.gz

cd libxml2-2.9.1

./configure --prefix=/work/MT7628/AmazonS3/libxml2-2.9.1 --host=mipsel-linux --with-iconv=no --with-zlib=no --with-python=no CC=mipsel-buildroot-linux-uclibc-gcc AR=mipsel-buildroot-linux-uclibc-ar RANLIB=mipsel-buildroot-linux-uclibc-ranlib STRIP=mipsel-buildroot-linux-uclibc-strip

make

make install

注:./configure 配置时如果不使用—with-iconv=no 和 —with-zlib=no,则编译时会依赖iconv和libz库。具体移植可以参考下面的步骤4和5.

 

4、编译iconv

下载地址:http://ftp.gnu.org/gnu/libiconv/

我使用的版本是:libiconv-1.13.tar.gz

tar -xvf libiconv-1.13.tar.gz

cd libiconv-1.13

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib32

./configure --prefix=/work/MT7628/AmazonS3/libiconv-1.13 —host=mipsel-linux CC=mipsel-buildroot-linux-uclibc-gcc —enable-shared

make

make install

注:编译过程中会用到系统的libz.so.1,所以需要执行export LD_LIBRARY_PATH指定系统的zlib路径。

 

5、编译zlib

下载地址:http://zlib.net/

我使用的版本是:zlib-1.2.11.tar.gz

tar -xvf zlib-1.2.11.tar.gz

cd zlib-1.2.11

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib32/

./configure --prefix=/work/MT7628/AmazonS3/libzlib-1.2.11

修改Makefile中gcc、ar、ranlib为以下内容

   mipsel-buildroot-linux-uclibc-gcc

   mipsel-buildroot-linux-uclibc-ar

   mipsel-buildroot-linux-uclibc-ranlib

make

make instll

 

三、编译libs3

  1. cd libs3/
  2. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib32/
  3. 修改GNUmakefile,把交叉编译移植的第三方库路径添加进来:

 

 

4、make CC=mipsel-buildroot-linux-uclibc-gcc -f GNUmakefile

此时在当前路径下会生成build目录,build/lib/libs3.so.4即为交叉编译生成的s3动态链接库。

 


转载:https://blog.csdn.net/zqj6893/article/details/101032213
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场