• 基于 libghttp 的七牛文件上传-交叉编译


    背景

    有些情况下,嵌入式设备文件上传需要的网络库不可以太大,诸如 curl 之类的库可能就太大了,好在有一种 libghttp 的库,可以用来发送 http 请求。

    编译Libghttp

    首先需要安装 libghttp 库到 arm 的系统中。

    下载源码:

    $ git clone https://github.com/sknown/libghttp.git
    $ ./configure

    修改Makefile,把gcc修改成自己的交叉编译链,我们采用的是:arm-linux-gnueabihf-gcc,根据您的实际情况修改

    all:
    	arm-linux-gnueabihf-gcc -DGHTTP_MAJOR_VERSION=1 -DGHTTP_MINOR_VERSION=0 -DGHTTP_MICRO_VERSION=9 -DPACKAGE="libghttp" -DVERSION="1.0.9" -DSTDC_HEADERS=1 -I. -I. -g -O2 -fPIC -c ghttp.c -o ghttp.o >/dev/null 2>&1
    	arm-linux-gnueabihf-gcc -DGHTTP_MAJOR_VERSION=1 -DGHTTP_MINOR_VERSION=0 -DGHTTP_MICRO_VERSION=9 -DPACKAGE="libghttp" -DVERSION="1.0.9" -DSTDC_HEADERS=1 -I. -I. -g -O2 -fPIC -c http_date.c -o http_date.o >/dev/null 2>&1
    	arm-linux-gnueabihf-gcc -DGHTTP_MAJOR_VERSION=1 -DGHTTP_MINOR_VERSION=0 -DGHTTP_MICRO_VERSION=9 -DPACKAGE="libghttp" -DVERSION="1.0.9" -DSTDC_HEADERS=1 -I. -I. -g -O2 -fPIC -c http_hdrs.c -o http_hdrs.o >/dev/null 2>&1
    	arm-linux-gnueabihf-gcc -DGHTTP_MAJOR_VERSION=1 -DGHTTP_MINOR_VERSION=0 -DGHTTP_MICRO_VERSION=9 -DPACKAGE="libghttp" -DVERSION="1.0.9" -DSTDC_HEADERS=1 -I. -I. -g -O2 -fPIC -c http_req.c -o http_req.o >/dev/null 2>&1
    	arm-linux-gnueabihf-gcc -DGHTTP_MAJOR_VERSION=1 -DGHTTP_MINOR_VERSION=0 -DGHTTP_MICRO_VERSION=9 -DPACKAGE="libghttp" -DVERSION="1.0.9" -DSTDC_HEADERS=1 -I. -I. -g -O2 -fPIC -c http_resp.c -o http_resp.o >/dev/null 2>&1
    	arm-linux-gnueabihf-gcc -DGHTTP_MAJOR_VERSION=1 -DGHTTP_MINOR_VERSION=0 -DGHTTP_MICRO_VERSION=9 -DPACKAGE="libghttp" -DVERSION="1.0.9" -DSTDC_HEADERS=1 -I. -I. -g -O2 -fPIC -c http_trans.c -o http_trans.o >/dev/null 2>&1
    	arm-linux-gnueabihf-gcc -DGHTTP_MAJOR_VERSION=1 -DGHTTP_MINOR_VERSION=0 -DGHTTP_MICRO_VERSION=9 -DPACKAGE="libghttp" -DVERSION="1.0.9" -DSTDC_HEADERS=1 -I. -I. -g -O2 -fPIC -c http_uri.c -o http_uri.o >/dev/null 2>&1
    	arm-linux-gnueabihf-gcc -DGHTTP_MAJOR_VERSION=1 -DGHTTP_MINOR_VERSION=0 -DGHTTP_MICRO_VERSION=9 -DPACKAGE="libghttp" -DVERSION="1.0.9" -DSTDC_HEADERS=1 -I. -I. -g -O2 -fPIC -c http_base64.c -o http_base64.o >/dev/null 2>&1
    	arm-linux-gnueabihf-ar cru libghttp.a  ghttp.o http_date.o http_hdrs.o http_req.o http_resp.o http_trans.o http_uri.o http_base64.o
    	ranlib libghttp.a
    	arm-linux-gnueabihf-gcc -DGHTTP_MAJOR_VERSION=1 -DGHTTP_MINOR_VERSION=0 -DGHTTP_MICRO_VERSION=9 -DPACKAGE="libghttp" -DVERSION="1.0.9" -DSTDC_HEADERS=1 -I. -I. -g -O2 -shared -o libghttp.so ghttp.o http_date.o http_hdrs.o http_req.o http_resp.o http_trans.o http_uri.o http_base64.o
    
    clean:
    	rm *.o *.a *.so
    
    make
    

    libghttp统译完成,arm-linux-gnueabihf-gcc库奉上.

    链接:https://pan.baidu.com/s/1V3-AR2cSi3WW193D3dUAwA 
    提取码:8888 
    

    编译Libghttp-qiniu

    在网上找一个大哥写的基于libghttp写的七牛库,感谢

    git clone https://github.com/jemygraw/libghttp-qiniu.git
    

    修改Makefile,路径根据自己的实际情况来填,我们采用的是交叉编译,所以我们手动指定了库的路径

    INCLUDE_PATH=-Ighttp-qiniu -I./libghttp/include -L./libghttp/lib
    SOURCE_FILES=
    	ghttp-qiniu/ghttp-qiniu.c
    	main.c
    
    all: $(SOURCE_FILES)
    	arm-linux-gnueabihf-gcc -std=c99 -g $^ -o upload $(INCLUDE_PATH) -lghttp
    

    最后编译.

  • 相关阅读:
    并发和多线程(二)--启动和中断线程(Interrupt)的正确姿势
    并发和多线程(一)--创建线程的方式
    MySQL系列(十二)--如何设计一个关系型数据库(基本思路)
    Elasticsearch系列(二)--query、filter、aggregations
    Spark-python入门
    python中的Turtle模块
    pytorch显示网络结构
    风格迁移(2)-Fast Style Transfer
    风格迁移(1)-格拉姆矩阵
    使用GAN生成图片
  • 原文地址:https://www.cnblogs.com/cqwo/p/15103651.html
Copyright © 2020-2023  润新知