关于libcurl(含ssl功能)编译过程中的注意点
1、为了方便整理库编译后的头文件和库文件,一般config之后,make ,make install 后,都会自动到你设定的目录中2、下文中设计到配置编译路径的地址,都为 绝对路径1、SSLopenssl的库需要提前编译好,我一般选择自定的输出位置,方便虚拟机中工程对库文件的管理,也方便在需要交叉编译的时候进行处理以下参考,不复述curl编译以及arm交叉编译_andylauren的专栏-CSDN
·
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库,本工程试验无效
更多推荐
已为社区贡献1条内容
所有评论(0)