编译和交叉编译curl

我就是我 2023-07-18 03:30 124阅读 0赞

一、Linux下编译curl:

在编译或交叉编译curl之前需要对应编译或交叉编译openssl,详细见:
https://blog.csdn.net/qq\_43603677/article/details/105064209
先下载curl安装包curl-7.69.1.tar.gz并解压安装包:
tar vxf curl-7.69.1.tar.gz:

  1. root@kwt-virtual-machine:/home/kwt# tar vxf curl-7.69.1.tar.gz

进入curl-7.69.1目录:

  1. 进入curl-7.69.1目录:

执行./configure命令生成Makefile:

  1. root@kwt-virtual-machine:/home/kwt/curl-7.69.1# ./configure --prefix=/home/kwt/curl

然后执行make和make install:

  1. root@kwt-virtual-machine:/home/kwt/curl-7.69.1# make
  2. root@kwt-virtual-machine:/home/kwt/curl-7.69.1# make install

完成后在/home/kwt/下生成curl文件夹,curl安装成功。
下面写一个简单使用libcurl的例子:
curl_test.c:

  1. #include <stdio.h>
  2. #include "/home/kwt/curl/include/curl/curl.h"
  3. int main(void)
  4. {
  5. CURL *curl;
  6. CURLcode res;
  7. /* http://curl.haxx.se/libcurl/c/curl_easy_init.html */
  8. curl = curl_easy_init();
  9. if(curl) {
  10. /* http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTURL */
  11. curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1/index.html");
  12. /* http://curl.haxx.se/libcurl/c/curl_easy_perform.html */
  13. res = curl_easy_perform(curl);
  14. if(CURLE_OK == res) {
  15. char *ct;
  16. /* ask for the content-type */
  17. /* http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html */
  18. res = curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &ct);
  19. if((CURLE_OK == res) && ct)
  20. printf("We received Content-Type: %s\n", ct);
  21. }
  22. /* always cleanup */
  23. /* http://curl.haxx.se/libcurl/c/curl_easy_cleanup.html */
  24. curl_easy_cleanup(curl);
  25. }
  26. return 0;
  27. }

执行gcc curl_test.c -o curl_test -L/home/kwt/curl/lib/ -lcurl得到可执行文件,执行可执行文件如下:

  1. root@kwt-virtual-machine:/home/kwt/Test/3# ./curl_test

在这里插入图片描述

二、交叉编译curl:

同样下载安装curl-7.69.1.tar.gz并解压安装包,进入curl-7.69.1目录之后执行一下命令生成Makefile:

  1. CPPFLAGS="-I/home/kwt/openssl/aarch/openssl/ -I/home/kwt/openssl/aarch/openssl/include" LDFLAGS="-L/home/kwt/openssl/aarch/openssl/lib" LIBS="-ldl" ./configure --host=aarch64-linux-gnu CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ --with-ssl --enable-shared --enable-static --disable-dict --disable-ftp --disable-imap --disable-ldap --disable-ldaps --disable-pop3 --disable-proxy --disable-rtsp --disable-smtp --disable-telnet --disable-tftp --disable-zlib --without-ca-bundle --without-gnutls --without-libidn --without-librtmp --without-libssh2 --without-nss --without-zlib --prefix=/home/kwt/curl/aarch/curl

然后执行make和make install生成/home/kwt/curl/aarch/curl。
修改使用libcurl的例子curl_test.c的如下内容:

  1. #include "/home/kwt/curl/aarch/curl/include/curl/curl.h"

交叉编译:

  1. aarch64-linux-gnu-gcc curl_test.c -o curl_test -L/home/kwt/curl/aarch/curl/lib/ -lcurl

生成可执行文件(丢到开发板测试)。

发表评论

表情:
评论列表 (有 0 条评论,124人围观)

还没有评论,来说两句吧...

相关阅读

    相关 交叉编译

    在做c项目(嵌入式编程)的时候经常能听到交叉编译。那什么是交叉编译呢? 交叉编译其实是相对于本地编译来说的。在我们学习C的时候,一般都是在自己的本地电脑上完成编

    相关 交叉编译

    一、什么是交叉编译   什么是交叉编译呢,简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓   平台,实际上包含两个概念:体系结构(Arch