1、为了方便整理库编译后的头文件和库文件,一般config之后,make ,make install 后,都会自动到你设定的目录中
2、下文中设计到配置编译路径的地址,都为 绝对路径

1、SSL

openssl的库需要提前编译好,我一般选择自定的输出位置,方便虚拟机中工程对库文件的管理,也方便在需要交叉编译的时候进行处理

以下参考,不复述

curl编译以及arm交叉编译_andylauren的专栏-CSDN博客 https://blog.csdn.net/andylauren/article/details/78821916

如何交叉编译openssl库? - Jello - 博客园 https://www.cnblogs.com/dakewei/p/11365179.html

2、zlib

这个库负责gzip等压缩功能,如果默认配置curl的编译,则需要依赖之,同样不复述了,编译输出头文件和库文件整理好就行

3、libcurl

关于编译curl

绝对路径 $CURL_OUTPUT 
绝对路径 $OPENSSL_OUTPUT
./configure --prefix=$CURL_OUTPUT   --enable-static -with-ssl=$OPENSSL_OUTPUT --disable-ldap --disable-ldaps

此处注意下后面几个编译选项,如果要开启ssl,那么需要

-with-ssl=你存放 openssl 编译输出的绝对路径地址

4、工程中的整合

本人使用cmake进行的,不过没有关系,库的连接顺序是重点,本工程最终可以跑通的顺序是


TARGET_LINK_LIBRARIES(${PROJECT_NAME} libcurl.a)      
TARGET_LINK_LIBRARIES(${PROJECT_NAME} libssl.a)
TARGET_LINK_LIBRARIES(${PROJECT_NAME} libcrypto.a)
TARGET_LINK_LIBRARIES(${PROJECT_NAME} libz.a)
TARGET_LINK_LIBRARIES(${PROJECT_NAME} rt)


说明:
1、curl和ssl、crypto的顺序固定如此,本工程中若调整则会最终编译时候报出许多未定义
2、z 需要在curl后面
3、rt 不添加的话,为提示时间方面的系统函数未定义

4、在rt下面还有 dl、pthread 两个库
5、有的文章提到添加idn库,本工程试验无效
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐