基于 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
最后编译.