发 帖  
原厂入驻New

[经验] 阿里云OSS的嵌入式移植&交叉编译

2018-11-29 15:23:47  2055 阿里云 嵌入式
分享
2
项目上要使用阿里的OSS  C-SDK进行文件传输,搞了几天,有点心得,跟大家分享一下,相关库文件我会提供下载

1、阿里云OSS需要几个依赖库,下面我按照我所使用的版本列出
      apr-1.5.2.tar.gz  ,apr-util-1.5.4.tar.gz  , curl-7.62.0.tar.bz2  , libexpat-master.zip  ,  mxml-2.10.tar.gz
2、阿里官方给出了 Linux系统下编译的方法,但是在这里我们讲的是 交叉编译
3、咋们先从 libcurl库开始
  1. ./configure --prefix=/home/huiwei/aliOSS/osssdk/curl --host=ARM-linux CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++
  2. make
  3. make install
复制代码

   说明:解压后,进入源码目录,
             --prefix:安装目录,这里我为了编译新建了aliOSS文件夹,使用的源码文件都在这个目录下,同时我建了osssdk文件夹,用来存放编译好的各种库
             --host:目标运行平台,就是这个软件将要在什么平台上运行

             --CC:交叉编译器gcc工具,我的交叉编译器已经添加到系统环境变量中,你也可以直接添加交叉编译器的路径在此

             --CXX:交叉编译器g++工具
   这个没什么,很容易就编译成功了
4、apr-1.5.2的编译
     这个的编译需要修改几个地方:
      4.1、修改
  1. vim include/apr_want.h
复制代码
  1. #IFndef APR_IOVEC_DEFINED
  2. #define APR_IOVEC_DEFINED

  3. 找到上面这两个,注释掉,改为
  4. #if  0
复制代码
     4.2、接下来我们开始编译
  1. ./configure
  2. make
  3. cp -a tools/gen_test_char ../
  4. make clean
  5. ./configure --prefix=/home/huiwei/aliOSS/osssdk/apr CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ --host=arm-linux   ac_cv_file__dev_zero=yes ac_cv_func_setpgrp_void=yes apr_cv_process_shared_works=yes apr_cv_mutex_robust_shared=yes apr_cv_tcp_nodelay_with_cork=yes ap_void_ptr_lt_long=no

  6. cp -a ../gen_test_char tools/
  7. vim Makefile
  8. 132行
  9. OBJECTS_gen_test_char = tools/gen_test_char.lo $(LOCAL_LIBS)
  10. 注释
  11. #OBJECTS_gen_test_char = tools/gen_test_char.lo $(LOCAL_LIBS)

  12. make
  13. make install
复制代码
  这个也很容易就成功了,就不多说了

5、apr-util-1.5.4的编译
    5.1、这个首先需要一个libexpat的交叉编译文件

  1. cd expat/
  2. ./buildconf.sh
  3. ./configure --prefix=/home/huiwei/aliOSS/osssdk/expat -host=arm-linux CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++

  4. automake
  5. make
复制代码
     这个编译没有成功,不过还是要继续  make install,我们所需要的文件也会在安装目录下生成,不影响使用,先编译这个的目的是一会编译apr-util的配置参数中需要添加它的路径
   5.2、网上查阅大家的帖子,发现还需要修改  apr-util-1.5.4的一个地方

  1. vim xlate/xlate.c
  2. 将handle_special_names函数中的
  3. return apr_os_default_encoding(pool);
  4. 注释掉,改为
  5. return page;
复制代码
   5.3、然后咋们继续编译  
  1. ./configure --prefix=/home/huiwei/aliOSS/osssdk/apr-util CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ --host=arm-linux   --with-apr=/home/huiwei/aliOSS/osssdk/apr --with-expat=/home/huiwei/aliOSS/osssdk/expat


  2. make
  3. make install
复制代码
这个也成功编译


6、mxml 2.10
  
  1. ./configure --prefix=/home/huiwei/aliOSS/osssdk/mxml --host=arm-linux CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++

  2. make
  3. make install
复制代码
6.1、这个的编译会报错

    ./testmxml: 1: ./testmxml: Syntax error: word unexpected (expecting “)”)     Makefile:352: recipe for target ‘testmxml’ faiLED
     make: * [testmxml] Error 2
   
     但是,霸王硬上弓也不是不可,报完错以后,在源码目录下生成一系列文件,咋们把它整理一下
   6.2、在osssdk文件加下新建如下文件结构,然后把相关文件,从源码目录下cp 过去,这里就不逼逼了,直接上图了,为了方便我在windows下进行展示
     
   
7、OSS_C_SDK 的编译
   在源码目录下,vim CMakeList.txt 文件,在最开头添加:

  1. SET(CMAKE_SYSTEM_NAME Linux)

  2. SET(TOOLCHAIN_DIR "/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux")

  3. set(CMAKE_SYSTEM_PROCESSOR MIPS)

  4. SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_DIR})

  5. SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)

  6. SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)

  7. SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

  8. SET(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/bin/arm-linux-gnueabihf-gcc)

  9. SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/arm-linux-gnueabihf-g++)
复制代码

  往下翻 ,有两个  FIND_PROGRAM .....,这个地方需要给个路径,屏蔽掉原来的,替换为
  
  1. FIND_PROGRAM(APR_CONFIG_BIN NAMES apr-config apr-1-config PATHS /home/huiwei/aliOSS/osssdk/apr/bin /usr/bin /usr/local/bin /usr/local/apr/bin/)
  2. FIND_PROGRAM(APU_CONFIG_BIN NAMES apu-config apu-1-config PATHS /home/huiwei/aliOSS/osssdk/apr-util/bin /usr/bin /usr/local/bin /usr/local/apr/bin/)
复制代码
再往下翻,还有一个地方有  FIND_PROGRAM....,这个地方也屏蔽掉,替换为

  1. FIND_PROGRAM(CURL_CONFIG_BIN NAMES curl-config curl-1-config PATHS /home/huiwei/aliOSS/osssdk/curl/bin /usr/bin /usr/local/bin /usr/local/apr/bin/)
复制代码
最后,还有一个,就是吧文件最后的两个 add...   其他工程的东西注释掉,不然编译不过,缺少变量
   接下来
  1. cmake . -DCMAKE_INSTALL_PREFIX=/home/huiwei/aliOSS/osssdk/oss_c_sdk -DCURL_INCLUDE_DIR=/home/huiwei/aliOSS/osssdk/curl/include/ -DCURL_LIBRARY=/home/huiwei/aliOSS/osssdk/curl/lib/libcurl.a -DAPR_INCLUDE_DIR=/home/huiwei/aliOSS/osssdk/apr/include/apr-1/ -DAPR_LIBRARY=/home/huiwei/aliOSS/osssdk/apr/lib/libapr-1.a -DAPR_UTIL_INCLUDE_DIR=/home/huiwei/aliOSS/osssdk/apr-util/include/apr-1 -DAPR_UTIL_LIBRARY=/home/huiwei/aliOSS/osssdk/apr-util/lib/libaprutil-1.a -DMINIXML_INCLUDE_DIR=/home/huiwei/aliOSS/osssdk/mxml/include/ -DMINIXML_LIBRARY=/home/huiwei/aliOSS/osssdk/mxml/lib/libmxml.a

  2. make
  3. make install
复制代码


功德圆满。















1.1.jpg
1.2.jpg
1.jpg
2.jpg
4.jpg
5.jpg

aliOSS C-SDK.tar.gz

下载积分: 积分 -1 分

17.1 MB, 下载次数: 28, 下载积分: 积分 -1 分

相关经验

lee_st 2018-11-29 22:06:17
看看
回复

举报

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发经验
关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表