交叉编译openssl及curl
操作环境:Ubuntu20.04
IDE工具:Clion2020.2
curl下载地址:https://curl.se/download/
openssl下载地址:https://openssl-library.org/source/old/index.html
直接交叉编译curl会报错找不到openssl,所以需要先交叉编译openssl
1. 交叉编译openssl
在openssl
源码文件夹建立脚本build.sh
,其中cross-compile-prefix
填入交叉编译工具链的前缀(包括前面的绝对路径),然后在这个openssl
路径下运行build.sh
即可。
# 设置编译文件夹、安装文件夹
build_dir=$PWD/build
install_dir=$PWD/dir
mkdir -p $build_dir
cd $build_dir
# 清除之前的编译内容
make clean
../config no-asm shared no-async \
--prefix=$install_dir \
--cross-compile-prefix=/usr/local/crosstoolchains/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
# 递归替换当前目录及子目录所有 Makefile 中的 -m64
find . -name "Makefile" -exec sed -i 's/-m64//g' {} \;
# 编译并安装
make -j $(nproc)
make install
运行完成,openssl源码文件夹内会出现build
和dir
文件夹,所有的编译内容会存放在build
文件夹,最终编译出来的库文件、可执行文件被安装到了dir
文件夹里面
2. 交叉编译curl
- 设置clion的交叉编译工具链
- 接下来设置
cmake选项
,将以下的两条内容都放在cmake选项
里面即可,其中-DOPENSSL_ROOT_DIR
是找安装openssl
的根目录,也就是上一步刚刚编译出来的openssl
的安装文件夹,-DCMAKE_INSTALL_PREFIX
决定curl
安装到哪里。
-DOPENSSL_ROOT_DIR=/home/xjgc/test/openssl-1.1.1w/dir
-DCMAKE_INSTALL_PREFIX=./target
- 点击
curl
文件夹中的CMakeLists.txt
,右键加载cmake项目,并选择curl
进行编译
如果在cmake-build-debug
文件夹下执行make install
,那么将会被安装到我们指定的安装路径(-DCMAKE_INSTALL_PREFIX参数指定的)