移植OSS SDK到TI3354 ARM平台记录

xiaoxiao2025-08-07  22

因为项目需要把数据上传到阿里云,我们的采集设备是ARM平台的,就要移植OSS SDK到我们的ARM平台,我们的设备用的是TI3354,LINUX 3.14,弄了两天终于弄好了,记录一下,原创文章,请勿转载!

交叉编译 OSS SDK 步骤

1.首先编译libcurl库

源码:https://curl.haxx.se/download.html,我下载的curl-7.32.0

curl

chmod 0777 configure

./configure --prefix=$PWD/../build_lib --host=arm-linux --target=arm-linux CC=arm-arago-linux-gnueabi-gcc

make

make install

 

2.编译apr-1.5.2

apr-1.5.2

./configure

make

cp -a tools/gen_test_char ../

make clean

./configure --prefix=$PWD/../build_lib --host=arm-linux CC=arm-arago-linux-gnueabi-gcc CXX=arm-arago-linux-gnueabi-g++ 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

cp -a ../gen_test_char tools/

Vim Makefile

134 行

OBJECTS_gen_test_char = tools/gen_test_char.lo $(LOCAL_LIBS)

屏蔽

#OBJECTS_gen_test_char = tools/gen_test_char.lo $(LOCAL_LIBS)

目的是不生成新的gen_test_char文件

8 vi include/apr_want.h 第93行 #ifndef APR_IOVEC_DEFINED 替换成#if 0

make

make install

 

3.编译apr-util-1.5.4

./configure --prefix=$PWD/../build_lib --host=arm-linux CC=arm-arago-linux-gnueabi-gcc CXX=arm-arago-linux-gnueabi-g++ --with-apr=$PWD/../build_lib/ --with-expat=$PWD/../build_lib/

make

make install

 

4.minixml,我用的mxml-2.9

./configure --prefix=$PWD/../build_lib --host=arm-linux CC=arm-arago-linux-gnueabi-gcc CXX=arm-arago-linux-gnueabi-g++

make

出错,不管,把so文件和.h文件拷贝走

 

4.下载oss sdk,百度一下阿里云OSS SDK,下载3.5.0

修改CMakeLists.txt如下

 

cmake . -DCMAKE_INSTALL_PREFIX=/home/stone/work/darma/temp/examples/uart_rcv/oss_arm/build_lib -DCURL_INCLUDE_DIR=/home/stone/work/darma/temp/examples/uart_rcv/oss_arm/build_lib/include/curl -DCURL_LIBRARY=/home/stone/work/darma/temp/examples/uart_rcv/oss_arm/build_lib/lib -DAPR_INCLUDE_DIR=/home/stone/work/darma/temp/examples/uart_rcv/oss_arm/build_lib/include/apr-1 -DAPR_LIBRARY=/home/stone/work/darma/temp/examples/uart_rcv/oss_arm/build_lib/lib/libapr-1.a -DAPR_UTIL_INCLUDE_DIR=/home/stone/work/darma/temp/examples/uart_rcv/oss_arm/build_lib/include/apr-1 -DAPR_UTIL_LIBRARY=/home/stone/work/darma/temp/examples/uart_rcv/oss_arm/build_lib/lib/libaprutil-1.a -DMINIXML_INCLUDE_DIR=/home/stone/work/darma/temp/examples/uart_rcv/oss_arm/build_lib/include/mxml/ -DMINIXML_LIBRARY=/home/stone/work/darma/temp/examples/uart_rcv/oss_arm/build_lib/lib/libmxml.so.1.5

make

make install

 

如果需要MD5校验,我发现很有必要做MD5校验,否则上传上去的文件会有不完整的情况。OSS SDK的MD5校验码制作方法有点麻烦,最后自己写了个工具来搞。

OSS CONTENT-MD5计算方法

md5sum xxx.dat 生成md5码

简单直接的方法:

echo -e -n "\xa8\x2b\xea\x08\xdc\x5d\x94\x81\x2a\xe3\x39\xe2\xdd\x06\xe6\xeb" | base64

正规的用法:

md5sum raw.dat | awk '{print $1}' | xxd -r -ps | base64

qCvqCNxdlIEq4zni3Qbm6w==

xxd移植不了,busybox中的参数不同,自己写了一个tcu_xxd来用

最后

#!/bin/sh

crc=`md5sum raw-data-129-201809130533.dat | awk '{print $1}'`

md5=`./tcu_xxd $crc | base64`

echo $md5

 

最后又搞定了断点续传,完美!

最后打下广告,有需要工控终端嵌入式设备的联系我啊,QQ:7972418 :)

转载请注明原文地址: https://www.6miu.com/read-5034461.html

最新回复(0)