在Ubuntu 1604上移植阿里云OSS C SDK

目录

1 说明

2 特别说明

3 在Ubuntu 1604上移植

3.1 说明

3.2 全局变量设置

3.3 移植openssl-1.0.2t

3.4 移植zlib-1.2.11

3.5 移植curl-7.67.0

3.6 移植apr-1.7.0

3.7 移植expat-2.1.0

3.8 移植apr-util-1.6.1

3.9 移植mxml-2.8

3.10 移植libuuid-1.0.3

3.11 移植aliyun-oss-c-sdk

3.12 统一打包成一个库


1 说明

阿里云OSS类似于网盘的功能,需要和阿里云签订商业协议才能存储大量的数据,所以如果和它们没有业务往来可以忽略本文内容。本文内容主要来自移植OSS C语言SDK(它还有其他语言的SDK)的经验。

2 特别说明

作者在移植成功之后,在(Ubuntu 1604上)运行过程中发现调用断点续传上传断点续传下载分片上传追加上传的业务函数会出现内存泄漏最终出现OOM。当时(2020年12月)对方技术支持说相对于C他们主要是推广C++版本的,推荐我们用C++的(当然我们也没有用C++版本,所以不知道C++版本的情况),现在有没有修复这些问题作者目前还没有验证。下列几张图是说明断点续传上传时的内存情况(虚拟内存占用越来越大)。

3 在Ubuntu 1604上移植

3.1 说明

本文提到的依赖软件包可以在百度网盘中找到,也可以自行从各自的官网下载。

链接:https://pan.baidu.com/s/1KK8HtGcJvR38ZmEazLlU2w

提取码:nsmy

可以从https://help.aliyun.com/document_detail/32131.html?spm=5176.87240.400427.52.8f4a4614owPWLu

查看OSS的全貌。

3.2 全局变量设置

在移植其他依赖包之前请先设置全局变量,

export CC=gcc

export CXX=g++

3.3 移植openssl-1.0.2t

tar xzf openssl-1.0.2t.tar.gz

cd openssl-1.0.2t

setarch i386 ./config no-asm --static --prefix=/home/lijun_PC_temp/install_tmp

make,成功之后可以找到libssl.a、libcrypto.a

make install

3.4 移植zlib-1.2.11

tar xJf zlib-1.2.11.tar.xz

cd zlib-1.2.11/

./configure --static --prefix=/home/lijun_PC_temp/install_tmp

make,成功之后可以找到libz.a

make install

3.5 移植curl-7.67.0

tar xzf curl-7.67.0.tar.gz

cd curl-7.67.0/

./configure --prefix=/home/lijun_PC_temp/install_tmp --with-ssl=/home/lijun_PC_temp/install_tmp --enable-shared=no --with-zlib=/home/lijun_PC_temp/install_tmp  CPPFLAGS="-I/home/lijun_PC_temp/install_tmp/include/openssl -I/home/lijun_PC_temp/install_tmp/include" LDFLAGS="-L/home/lijun_PC_temp/install_tmp/lib"

make,成功之后可以找到libcurl.a

make install

3.6 移植apr-1.7.0

tar xzf apr-1.7.0.tar.gz

cd apr-1.7.0/

./configure --prefix=/home/lijun_PC_temp/install_tmp ac_cv_file__dev_zero=yes ac_cv_func_setpgrp_void=yes apr_cv_tcp_nodelay_with_cork=yes --cache=arm-none-linux-gnueabi.cache

vim ./include/apr_want.h +95,将struct iovec定义的地方注释掉,如下所示:

#if 0

struct iovec

{

void *iov_base;

size_t iov_len;

};

#endif

make,成功之后可以找到libapr-1.a

make install

3.7 移植expat-2.1.0

tar xzf expat-2.1.0.tar.gz

cd expat-2.1.0/

./configure --prefix=/home/lijun_PC_temp/install_tmp

make,成功之后可以找到libexpat.a

make install

3.8 移植apr-util-1.6.1

tar xzf apr-util-1.6.1.tar.gz

cd apr-util-1.6.1/

./configure --prefix=/home/lijun_PC_temp/install_tmp --with-apr=/home/lijun_PC_temp/install_tmp  --with-expat=/home/lijun_PC_temp/install_tmp

make,成功之后可以找到libaprutil-1.a

make install

3.9 移植mxml-2.8

tar xzf mxml-2.8.tar.gz

cd mxml-2.8/

./configure --prefix=/home/lijun_PC_temp/install_tmp

make,生成了libmxml.a

make install

3.10 移植libuuid-1.0.3

tar xzf libuuid-1.0.3.tar.gz

cd libuuid-1.0.3

./configure --prefix=/home/lijun_PC_temp/install_tmp

make,成功之后可以找到libuuid.a

make install

3.11 移植aliyun-oss-c-sdk

cmake . -DCMAKE_INSTALL_PREFIX=/home/lijun_PC_temp/install_tmp/ -DCURL_INCLUDE_DIR=/home/lijun_PC_temp/install_tmp/include/curl/ -DCURL_LIBRARY="/home/lijun_PC_temp/install_tmp/lib/libcurl.a"  -DAPR_INCLUDE_DIR=/home/lijun_PC_temp/install_tmp/include/apr-1/ -DAPR_LIBRARY=/home/lijun_PC_temp/install_tmp/lib/libapr-1.a  -DAPR_UTIL_LIBRARY=/home/lijun_PC_temp/install_tmp/lib/libaprutil-1.a -DMINIXML_INCLUDE_DIR=/home/lijun_PC_temp/install_tmp/include -DMINIXML_LIBRARY=/home/lijun_PC_temp/install_tmp/lib/libmxml.a -DPTHREAD_LIBRARY=/usr/local/arm/4.4.1/arm-none-linux-gnueabi/libc/usr/lib/libpthread.so  -DMATH_LIBRARY=/usr/local/arm/4.4.1/arm-none-linux-gnueabi/libc/usr/lib/libm.so

make,生成liboss_c_sdk_static.a(编译可能会报错,但是生成了liboss_c_sdk_static.a就好)。

3.12 统一打包成一个库

基本思路就是先将所有的.a解包出多个.o,然后将所以的.o打包成一个.a。

mkdir /home/lijun_PC_temp/temp,将上述生成的.a文件全部拷入其中。

cd /home/lijun_PC_temp/temp

ar x libcrypto.a

ar x libssl.a

ar x libz.a

ar x libcurl.a

ar x libapr-1.a

ar x libexpat.a

ar x libmxml.a

ar x libaprutil-1.a

ar x liboss_c_sdk_static.a

ar x libuuid.a

ar crsv newLib.a *.o

gcc oss_listBucket.c newLib.a -o oss_listBucket -I/home/lijun_PC_temp/install_tmp/include/ -I/home/lijun_PC_temp/install_tmp/include/apr-1/ -lrt -lpthread -ldl

oss_listBucket.c可以通过“说明”章节提到的官方网址下载。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ta是一个搬运工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值