博客
关于我
linux编译动态库时,libcrypto.a 提示recompile with -fPIC
阅读量:792 次
发布时间:2023-02-05

本文共 870 字,大约阅读时间需要 2 分钟。

解决OpenSSL编译错误:重新认识./config参数的重要性

在编译OpenSSL时,遇到类似以下错误:

/usr/bin/ld: /usr/local/ssl/lib/libcrypto.a(x86_64cpuid.o): relocation R_X86_64_PC32 against `OPENSSL_cpuid_setup' can not be used when making a shared object; recompile with -fPIC

这提示我们在编译动态库时使用了静态库 /usr/local/ssl/lib/libcrypto.a,导致缺少关键编译参数 -fPIC。经过查阅资料,正确的编译流程应为:

./config -fPICmakemake install

然而,我一 直误解了 ./config 的用法,直接运行 ./config 而忽略了后续参数,导致编译失败。经过深入研究,发现正确配置依赖于指定编译模式,而不是简单地运行默认配置。

实现的错误分析

在编译过程中,缺少 -fPIC 会导致重定位错误。这个选项用于生成位置独立代码,适用于动态库编译。使用 ./config -fPIC 可以确保编译结果是位置独立的,从而避免重定位错误。

修复方法

为了修复这个问题,需按照以下步骤操作:

  • 进入OpenSSL源码目录:确保当前工作目录位于 Open SSL 源码仓库中。

  • 运行正确的配置命令:执行 ./config -fPIC,选定编译模式 -fPIC

  • 编译源码:运行 make,开始编译。

  • 安装编译结果:执行 make install,将编译好的动态库安装到指定目录。

  • 经验总结

    在编译 OpenSSL 时,正确配置编译参数至关重要。忽略 -fPIC 会导致关键错误,影响动态库的编译和使用。通过加上 -fPIC 参数,可以避免上述错误,并确保编译成功。记住,这个参数告诉编译器生成适合动态链接库的位置独立代码,是解决类似问题的关键。

    希望以上方法能帮助您顺利编译 Open SSL 库!

    转载地址:http://elkfk.baihongyu.com/

    你可能感兴趣的文章
    Linux常用嗅探工具(1):fping命令
    查看>>
    linux常用快捷键
    查看>>
    Linux常用的网络命令有哪些?快速入门!
    查看>>
    linux常见命令
    查看>>
    linux常见操作命令及操作符意思
    查看>>
    Linux常见操作命令整理
    查看>>
    Linux平台安装mongoDB、配置及端口开启
    查看>>
    linux库列表
    查看>>
    linux开启nscd服务缓存加速-DNS缓存
    查看>>
    Linux开放的端口太多了?教你一招找出所有开放的端口,然后直接干掉!
    查看>>
    Linux开机启动、利用crontab实现开机启动某个程序
    查看>>
    linux开机启动脚本制作
    查看>>
    Linux忘记用户名密码
    查看>>
    linux怎样用node编辑内容,Linux系统编写Node.js应用
    查看>>
    Linux性能优化思路和方法
    查看>>
    Linux或Centos查看CPU和内存占用情况_top只能查看对应的命令_如何查看具体进程---linux工作笔记062
    查看>>
    linux打印函数是哪个文件夹,如何从linux上的文件夹中找到一个函数
    查看>>
    Linux授予权限命令
    查看>>
    Linux搭建DHCP服务
    查看>>
    Linux搭建FTP服务(附FTP Server 服务器客户端工具)
    查看>>