运行配置脚本
利用 Configure 脚本配置 OpenSSL,指定目标平台和安装路径:
curl downloads 各个版本
Old 1.1.1 Releases | OpenSSL Library 各个版本
从 OpenSSL 官网下载源码包
- tar -xzf openssl-1.1.1b.tar.gz
- cd openssl-1.1.1b/
复制代码 运行配置脚本
利用 Configure 脚本配置 OpenSSL,指定目标平台和安装路径:
- ./Configure linux-armv4 --prefix=/home/lxh/arm-libs/install --cross-compile-prefix=arm-linux-gnueabihf-
复制代码
- linux-armv4:指定目标平台为 ARM。
- --prefix:指定安装路径(更换为你的目标路径)。
- --cross-compile-prefix:指定交织编译工具链前缀。
- 调整配置(可选)
如果需要调整配置,可以编辑天生的 Makefile,例如:
- 修改 CFLAGS 和 LDFLAGS 以优化编译选项。
- 确保 -march=armv7-a 或 -mcpu=cortex-a9 等选项恰当你的目标硬件。
- 编译 OpenSSL
- 编译源码
运行以下命令开始编译:
- -j$(nproc):利用多核并行编译以加快速率。
- 检查编译效果
编译完成后,检查天生的库文件和可实行文件:
输出应显示为 ARM 架构的可实行文件。
将编译好的 OpenSSL 安装到指定路径:
下载并解压 curl 源码
- tar -xvjf curl-7.64.1.tar.bz2
- cd curl-7.64.1
复制代码 利用 configure 脚本配置编译选项,指定交织编译工具链和目标平台
- ./configure --host=arm-linux-gnueabihf --prefix=/home/lxh/arm-libs/install \
- --with-ssl=/home/lxh/arm-libs/install \
- --disable-ldap \
- --disable-ldaps \
- --without-libpsl \
- --without-libidn2 \
- --without-zstd \
- --without-brotli \
- --without-libpsl \
- CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++
复制代码
- --host=arm-linux-gnueabihf:指定目标平台为 ARM。
- --prefix=/home/lxh/arm-libs/install:指定安装目次。
- --with-ssl 和 --with-zlib:启用 SSL 和 zlib 支持。
- CC 和 CXX:指定交织编译器
编译和安装
- make -j$(nproc)
- make install
复制代码 在 ARM 装备上运行 curl,验证是否正常工作。
testcurl.c
- #include <curl/curl.h>
- int main(void)
- {
- CURL *curl;
- CURLcode res;
- curl_global_init(CURL_GLOBAL_DEFAULT);
- curl = curl_easy_init();
- if (curl)
- {
- curl_easy_setopt(curl, CURLOPT_URL, "https://www.baidu.com");
- res = curl_easy_perform(curl);
- if (res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
- curl_easy_cleanup(curl);
- }
- curl_global_cleanup();
- return 0;
- }
复制代码
makefile
- # 交叉编译工具链
- CC = arm-linux-gnueabihf-gcc
- # curl 库的安装路径
- CURL_DIR = /home/lxh/arm-libs/install
- # 编译选项
- CFLAGS = -I$(CURL_DIR)/include
- LDFLAGS = -L$(CURL_DIR)/lib -lcurl -lssl -lcrypto
- # 目标可执行文件
- TARGET = curl_example
- # 源文件
- SRCS = testcurl.c
- # 默认目标
- all: $(TARGET)
- # 编译规则
- $(TARGET): $(SRCS)
- $(CC) $(CFLAGS) -o $(TARGET) $(SRCS) $(LDFLAGS)
- # 清理
- clean:
- rm -f $(TARGET)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |