curl 交叉编译

9 篇文章 0 订阅
2 篇文章 0 订阅

curl 的编译过程会用到openssl,所以在交叉编译 curl 之前,需要先交叉编译 openssl
https://blog.csdn.net/weixin_44023406/article/details/103610397

1、下载源码

https://curl.haxx.se/download.html

2、解压

解压:tar -xzvf curl-7.67.0.tar.gz

进入解压后目录:cd curl-7.67.0

3、配置

LIBS="-ldl -ssl -crypto" ./configure --host=arm-linux CC=arm-linux-gcc CXX=arm-linux-g++ --with-ssl=/usr/local/openssl/arm_openssl --prefix=/usr/local/curl/arm_curl

CPPFLAGS="-I/usr/local/openssl/arm_openssl/include" LDFLAGS="-L/usr/local/openssl/arm_openssl/lib" LIBS="-ldl" ./configure --host=arm-linux CC=arm-linux-gcc CXX=arm-linux-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=/usr/local/curl/arm_curl

CPPFLAGS="-I/usr/local/openssl/arm_openssl/include"
LDFLAGS="-L/usr/local/openssl/arm_openssl/lib"
LIBS="-ldl"
./configure
–host=arm-linux CC=arm-linux-gcc CXX=arm-linux-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=/usr/local/curl/arm_curl

这里为了讲解把指令拿出来并加了换行,实际使用时直接复制上面代码框里的指令即可

参数说明:
CPPFLAGS 设置 openssl 的头文件路径,注意引号、-I(大写 i )等细节
LDFLAGS 指定 openssl 的动态库或者静态库路径
这里交叉编译 curl 的话,openssl 也要使用交叉编译后的库,可参考:openssl 交叉编译
LIBS="-ldl" 指定需要链接的库的 名字(不包含 lib 和 .a 或 .so)请参考:gcc -I -i -L -l 参数区别 / -l(静态库/动态库)
–host=arm-linux CC=arm-linux-gcc CXX=arm-linux-g++ 设置交叉编译工具
中间的一大段我也看不明白,希望大神能指点一下
–prefix=XXXXX 设置编译后的安装路径

上面一整段不要换行,放在终端里运行即可
(可以先放在记事本里,对应参数改成自己的,确认无误后复制到终端)
在这里插入图片描述配置结果
在这里插入图片描述
在这里插入图片描述
遇到的错误1: 配置 openssl 的路径时缺少 -L、-I(大写 i )
在这里插入图片描述
解决:https://blog.csdn.net/weixin_44023406/article/details/103625445

错误2: openssl 相关函数找不到
在这里插入图片描述
解决:

4、编译

make

遇到的错误
在这里插入图片描述
解决:

5、安装

make install

目标文件夹下生成两个文件夹
在这里插入图片描述
lib 文件夹下,适用于 ARM 架构的动态库和静态库
在这里插入图片描述
软链接也没有问题
在这里插入图片描述

6、使用

在编译自己的代码的时候,把刚刚编译生成的静态库( libcurl.a )路径引入即可,【 使用Makefile 的同学在 Makefile 中调用 】
在这里插入图片描述
可以把整个 arm_curl 文件夹复制到工程目录下,相对路径引用即可,直接复制过去不影响使用

curl 找不到的错误没有了,但是出现更多错误(鼠标滚轮一直翻不完的那种)
找不到 SSL的相关函数、MD5的相关函数、DES的相关函数 等等
把 openssl 的静态库引入即可

在这里插入图片描述
另外,还有找不到pthread的相关函数、 dlxxx的相关函数、 rtxxx的相关函数,同理,编译时引入即可
这三个在包含在 gcc 里面,不需要单独编译,手动引入项目

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

参考:
https://blog.csdn.net/andylauren/article/details/78821916

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
### 回答1: 在Linux下使用curl进行交叉编译,首先需要安装相关的交叉编译工具链。根据目标平台选择适当的工具链,如ARM、MIPS等。然后,下载curl的源代码包并解压。 进入curl源码目录后,可以配置编译参数。使用./configure命令,通过指定交叉编译工具链的位置和参数,来进行交叉编译的配置。例如: ``` ./configure --host=交叉编译工具链的前缀 ``` 其中,"--host"参数后面跟的是经过交叉编译工具链前缀,如arm-linux-gnueabi、mips-linux-gnu等。这样配置之后,就可以使用交叉编译器来编译curl了。 配置完成后,运行make命令进行编译。编译完成后,即生成了交叉编译后的curl可执行文件。 最后,将生成的可执行文件拷贝到目标平台上进行运行测试即可。 总结起来,通过安装交叉编译工具链、配置编译参数,以及使用make命令进行编译,就可以在Linux下完成curl交叉编译。 ### 回答2: 在Linux系统下,交叉编译是指在一台主机上用特定工具链编译生成适用于另一种主机架构的可执行程序。对于curl在Linux下的交叉编译,以下是一些步骤: 首先,我们需要设置交叉编译环境。这包括安装交叉编译工具链和交叉编译的目标架构的头文件与库。 然后,我们需要下载curl的源代码。可以从curl的官方网站下载最新版本的源代码。 接下来,我们需要根据交叉编译工具链的要求配置curl的编译选项。这可能涉及到指定目标架构、链接选项、头文件和库的路径等。 然后,我们可以运行configure命令来生成适用于交叉编译环境的Makefile。configure命令会根据主机架构、编译选项等自动配置Makefile。 接着,我们可以运行make命令进行编译。make命令会根据Makefile中的指令来编译生成可执行程序。在编译过程中,可能会出现一些依赖问题需要解决,比如缺少某些库文件。 最后,我们可以运行make install命令将编译生成的可执行程序安装到目标机器中。 需要注意的是,根据交叉编译工具链和目标架构的不同,具体的交叉编译过程可能会有所差异。因此,在进行交叉编译前,建议阅读相关文档或参考其他资源,以便更好地理解和掌握交叉编译的步骤和注意事项。 ### 回答3: 在Linux下进行curl交叉编译,需要以下几个步骤: 1. 安装交叉编译工具链:首先需要在Linux系统中安装适合目标平台的交叉编译工具链。根据目标平台的不同,可以选择不同的工具链,例如gcc、g++等。 2. 下载curl源代码:从curl的官方网站上下载最新的curl源代码包,并解压到本地。 3. 配置交叉编译环境:打开终端,进入解压后的curl源代码目录下,执行以下命令: ``` export CC=交叉编译器路径 export CXX=交叉编译器路径 export AR=交叉编译器路径-ar export RANLIB=交叉编译器路径-ranlib export LD=交叉编译器路径-ld export STRIP=交叉编译器路径-strip export CPPFLAGS="-I交叉编译器路径/include" export LDFLAGS="-L交叉编译器路径/lib" ``` 替换上述命令中的“交叉编译器路径”为实际的交叉编译工具链路径。 4. 配置编译选项:执行以下命令配置编译选项: ``` ./configure --host=目标平台 --prefix=安装路径 ``` 其中,目标平台是指要将curl交叉编译到的目标硬件平台,安装路径是指将编译后的curl安装到的目录。根据实际的需求进行配置。 5. 编译和安装:执行以下命令开始编译和安装: ``` make make install ``` 编译过程可能需要一些时间,等待编译完成后,curl将被安装到指定的安装路径下。 通过以上步骤,我们可以在Linux下成功进行curl交叉编译。在配置交叉编译环境时,需要注意交叉编译器的选择和路径的配置,确保编译工具链已正确安装,并设置正确的编译选项。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值