libcurl交叉编译
需要源码交叉编译libcurl操作步骤
背景
有时候需要交叉编译libcurl,比如目标机器是32位系统的,但是本地机器是64位系统的,而且由于某些原因,我们无法在32位系统上直接编译,所以需要用到交叉编译
编译openssl
libcurl是依赖openssl的,所以先编译openssl的32位库
完整编译选项配置如下:
1 | setarch i386 ./config -m32 –prefix=/home/muhan/openssl/ –openssldir=/home/muhan/openssl/ -Wl,-rpath,/usr/local/openssl/lib shared |
详细选项含义如下:
1 | 配置-m32 指定编译32位的库 |
然后再make && make install 即可
编译安装zlib
有时候有的系统是默认安装了32位zlib库的,那么就可以跳过这一步,但是有的系统需要自己下载编译zlib-32位库
完整编译选项配置如下:
直接修改CMakeLists.txt文件,增加以下两行
1 | set(CMAKE_C_FLAGS “-m32”) |
详细选项含义如下:
1 | 配置CMAKE_C_FLAGS 指定编译32位库环境 |
然后再mkdir build && cd build && cmake .. && make && make install 即可
编译安装libcurl
最后就是编译libcurl
完整编译选项配置如下:
1 | ./configure PKG_CONFIG_PATH=/home/muhan/openssl CFLAGS=”-m32” CPPFLAGS=”-I/home/muhan/openssl/include” LDFLAGS=”-L/home/muhan/openssl/lib” |
详细选项含义如下:
1 | 配置PKG_CONFIG_PATH 指定启动openssl选项(启动这个选项,就会默认链接lssl,lcrypto,lz三个库) |
然后再make && make install 即可
总结
当编译第三方库的时候,如果有CMakeLists.txt,直接用CMakeLists.txt编译就很方便;
如果只有configure,那么需要先了解编译选项
执行./configure –help 来查看当前支持的编译选项
然后根据提示配置一下我们需要指定的选项,比如自己指定的openssl的版本的库和头文件路径名,比如CC的版本,比如安装路径等等
(当然,如果不需要额外配置这些东西的话,直接走默认配置的话,那么直接执行./config 或者 ./configure 就行)
然后在生成Makefile之后,再make && make install 即可