| <!-- |
| |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| |
| --> |
| |
| # a complete C rest client demo project |
| |
| ## project structure |
| |
| - base64.c/base64.h: a util for base64.encode/decode |
| |
| - main.c: call the rest api for IoTDB |
| |
| ## How to build |
| |
| dependency: libcurl |
| |
| - example: Ubuntu 16.04 STL (Ubuntu 20.04 may have some problems) |
| |
| ```shell script |
| sudo apt-get install libcurl4-openssl-dev |
| ``` |
| |
| Before build, you must install the libcurl. |
| |
| build steps: |
| |
| ```shell script |
| mkdir build |
| cd build |
| cmake .. |
| make |
| ``` |
| |
| Eventually, you will get an executable program `c_rest_iotdb` in `build` directory. |
| |
| ## cross compilation |
| |
| - os : Ubuntu 16.04 STL |
| |
| 1. choose and install cross compiler according to the target host |
| |
| arm-linux-gnueabihf-gcc as an example. |
| |
| - arm-linux-gnueabihf-gcc |
| |
| ```shell script |
| sudo apt-get install gcc-arm-linux-gnueabihf |
| ``` |
| |
| 2. cross compile libcurl |
| |
| - download the *.tar.gz in https://curl.haxx.se/download/, and uncompress it. |
| |
| - compile and install |
| |
| ```shell script |
| ./configure --host=arm-linux/arm-linux-gnueabihf/others CC=arm-linux-gnueabihf-gcc --prefix=`install dir` --enable-static --with-wolfssl |
| make |
| make install |
| ``` |
| |
| 3. cross compile the example program |
| |
| ```shell script |
| arm-linux-gnueabihf-gcc main.c base64.c -o c_rest -L `(libcurl install dir)/lib/` -l curl |
| ``` |
| |
| if can't find `curl/curl.h`, you can just simply change to the absolutely path or specify the include path. |
| |
| Reference Materials |
| |
| libcurl usage: |
| |
| https://blog.csdn.net/myvest/article/details/82899788 |
| |
| compilation: |
| |
| https://blog.csdn.net/u011641885/article/details/46900771 |
| |
| https://www.cnblogs.com/flyinggod/p/10148228.html |
| |
| https://blog.csdn.net/fangye945a/article/details/86500817 |
| |
| https://www.cnblogs.com/yxh-l-0824/p/13254891.html |
| |
| https://www.cnblogs.com/tansuoxinweilai/p/11602830.html |
| |
| https://www.cnblogs.com/pied/p/8805883.html |
| |
| |
| |
| |
| |
| |