Compiling OpenSSL on Linux

解决Linux系统下(交叉)编译出现“cannot find -lxxx”的错误 (ubuntu) 在Linux环境下(交叉)编译程序或者库源码时,出现:“cannot find -lxxx”错误 阅读详情
OpenSSL
OpenSSL is a replacement for SSLeay secure socket layer.
This document reflects my real-world experience in building OpenSSL 0.9.4 (~1.6M) on a Slackware 4.0 Linux 2.2.10 box. A new version appears to come out every two or three months.
Obtaining OpenSSL
OpenSSL Tarball page at http://www.openssl.org/source/ will show you a list of mirror sites you can obtain the latest from. Again, these instructions pertain to just the openssl-0.9.4.tar.gz version.
Untaring
To untar the file, execute tar zxvf openssl-0.9.4.tar.gz. This will produce a subdirectory called openssl-0.9.4 with everything you need inside.
Installation instructions are convienently in a file called INSTALL, this file can be viewed with less INSTALL.
Configuring
Change into the openssl-0.9.4 directory with:
$ cd openssl-0.9.4
Start the configuration process to identify your platform and its capabilities:
$ ./config
To build the software, simply make it:
$ make
...the compile process will take a while to complete...
Test the build to make sure it worked:
$ make test
Now the big step, installing. You'll need to be root in order to do this next phase:
# make install
You'll find your new software is now located in /usr/local/ssl, be sure to check out the bin and include subdirectories. See the INSTALL and README files that explain how you need to specify #include in your source since the include files moved to a subdirectory.
This page last updated       


2 Get openssl directory installed and version info

# which openssl
/usr/bin/openssl

# /usr/bin/openssl version
OpenSSL 0.9.4 14 Mar 2012


3  Cross platform compile x86 Android version Openssl on Ubuntu

1>下载NDK Linux版本并解压缩

2> 设置工具链

./android-ndk-r10/build/tools/make-standalone-toolchain.sh--platform=android-19 --install-dir=/tmp/my-android-toolchain --arch=x86

export PATH=/tmp/my-android-toolchain/bin:$PATH

export CC=i686-linux-android-gcc

export CXX=i686-linux-android-g++

3> 切换到openssl根目录,配置

    ./config

    ./Configure os/compiler:android-x86      

    这里是target是x86 Android,所以选了flag android-x86。但是似乎选择任意flag都可以,选择这个flag主要是为了将Makefile中的与当前  host机器相关的编译选项去掉,然后能顺利编译。

4> make


http://mobilepearls.com/labs/native-android-api/ndk/docs/STANDALONE-TOOLCHAIN.html

Arch Linux下用RVM管理Ruby on Rails开发环境的必要性 Ruby on Rails 是基于 Ruby 语言的全栈 Web 框架,其开发依赖稳定、隔离且可复现的 Ruby 运行时环境。在滚动更新的 Arch Linux 上,系统级 Ruby 包存在版本滞后、权限冲突与多版本不可并存等固有局限,导致 Rails 项目初始化失败、gem 编译报错(如 openssl/ssl.h 缺失)、依赖链断裂等高频问题。RVM 通过用户空间安装、自动适配 Arch 特定依赖(如 openssl-1.1、base-devel)、预置编译参数及 gemset 隔离机制,构建出与系统解 阅读详情

相关推荐

CentOS 6 上用 RVM 安装 Ruby on Rails 的实战指南

Ruby on Rails 是基于 Ruby 构建的全栈 Web 开发框架,其运行依赖特定版本的 Ruby 解释器、OpenSSL 加密库和系统编译工具链。在老旧但仍在服役的 CentOS 6 环境中,系统自带的 Ruby 1.8.7、OpenSSL 1.0.1e 和 GCC 4.4.7 构成硬性兼容瓶颈,直接 yum 安装会导致 Rails 无法启动、HTTPS 请求失败、编译中断等典型问题。RVM(Ruby Version Manager)通过用户空间沙箱机制,实现 Ruby 版本隔离、独立 OpenS

weixin_30634661的博客 454

./configure出现C compiler cc is not found

1.报错信息 [root@cxf nginx-1.20.2]# ./configure checking for OS + Linux 4.18.0-305.12.1.el8_4.x86_64 x86_64 checking for C compiler ... not found ./configure: error: C compiler cc is not found 2.解决办法 yum -y install gcc yum -y install gcc-c++ ...

小小关的博客 2995

Arch Linux下Ruby on Rails开发:为何必须用RVM替代pacman

Ruby on Rails 是一个依赖严格版本管理的全栈Web框架,其核心机制要求 Ruby 解释器、Bundler、Rails 本体及项目 gem 集合形成可复现的隔离环境。传统系统包管理器(如 Arch 的 pacman)提供全局、静态、滞后更新的 Ruby 和 Rails,无法满足 Gemfile.lock 锁定的 Ruby 版本、多项目多 Rails 版本共存、按需编译扩展等工程需求。RVM 作为成熟的 Ruby 版本与 gemset 管理工具,通过 .ruby-version 和 .ruby-ge

weixin_30843605的博客 415

关于./configure、cmake、make、make install 命令的介绍

这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤 note:1.如果经常在Linux系统下面与C、C++文件打交道的话,一定经常遇到四/五步走: mkdir build cd build cmake .. make // 如果是安装依赖库的时候会用到 make install 前两步并不难理解,就是想把对应项目的编译文件放在build目录下,这样便于管理...

龙雪的博客 1646

CVE-2023-38545漏洞分析:curl与OpenSSL栈缓冲区溢出原理与修复

栈缓冲区溢出是C/C++程序中常见的内存安全漏洞,其原理是程序向栈上分配的固定大小缓冲区写入数据时,未进行有效的边界检查,导致数据覆盖了相邻的内存区域。这种漏洞可能破坏栈帧结构,覆盖函数返回地址或关键指针,从而被攻击者利用来实现拒绝服务或任意代码执行,对软件安全构成严重威胁。在网络安全领域,TLS/SSL证书解析作为建立加密通信链路的信任基础,其安全性至关重要。当广泛使用的网络传输工具curl以OpenSSL作为其TLS后端时,两者深度集成的代码路径便成为潜在的风险点。本文聚焦于CVE-2023-38545

weixin_30258901的博客 465

彻底解决Python SSL模块缺失:从原理到Docker部署的完整指南

SSL/TLS加密是现代网络通信的基石,为HTTP、API调用等数据传输提供安全保障。其工作原理基于非对称加密和证书验证,在握手阶段建立安全通道。在Python生态中,requests、urllib等库依赖底层的ssl模块实现HTTPS通信。当在Linux服务器或Docker环境部署Python应用时,常因缺失OpenSSL开发包或编译配置不当,导致出现“SSL module not available”错误,使得爬虫、微服务等联网请求完全失效。本文通过剖析Python与OpenSSL的依赖链,提供从快速诊

weixin_34068198的博客 470

openssl 交叉编译 arm

ARM平台的交叉编译安装: 编译:openssl ./config no-asm -shared --prefix=/arm/openssl os/compiler:arm-linux-gcc 修改: CC= arm-linux-gcc AR= arm-linux-ar $(ARFLAGS) r RANLIB= arm-linux-ranlib 如果存在 -march=pentium 就去掉。...

SmtRobot的博客 3641

Ruby on Rails生产环境部署:Apache+Passenger+MySQL深度配置指南

Ruby on Rails 是典型的服务器端 Web 应用框架,其生产部署依赖于 Ruby 运行时、Web 服务器(如 Apache)与应用服务器(如 Passenger)的精密协同。理解 Passenger 作为 Ruby 和 Apache 之间的运行时桥梁机制,是解决 'App could not be started' 等静默失败的关键;而 MySQL 的 sql_mode、lower_case_table_names 等底层参数,则直接决定 ActiveRecord 行为一致性与数据完整性。本文面向

weixin_33882452的博客 368

交叉编译 openssl

需要注意的是,不同的操作系统和平台可能需要不同的编译选项和配置,你需要根据你的实际情况进行调整。另外,为了保证安全性,强烈建议在生产环境中使用经过安全审计的 OpenSSL 版本,并遵循最佳实践来使用 OpenSSL 库。你可以将这些库文件链接到你的应用程序中,以便使用 OpenSSL 的加密和解密功能。变量指定交叉编译工具链中的编译器和 ranlib 工具,并使用。变量指定交叉编译工具链中的编译器和 ranlib 工具。这将安装 aarch64 交叉编译器和工具链。注意,这里同样使用了。

Xuesengxinyi的博客 1608

Debian 8 上用 RVM 安装 Ruby on Rails 的工程实践指南

Ruby on Rails 是一套强调开发效率与可维护性的 Web 应用框架,其运行依赖特定 Ruby 版本与隔离的 gem 生态。在老旧但稳定的 Linux 发行版(如 Debian 8)上部署 Rails,核心挑战在于绕过陈旧系统 Ruby、规避 apt 包管理冲突,并实现多版本 Ruby 与项目级 gem 隔离。RVM(Ruby Version Manager)凭借用户级沙盒、bash 兼容性优化及自动依赖提示能力,成为该场景下比 rbenv 更稳健的选择。它支持在不触碰 `/usr/bin/ruby

weixin_34008805的博客 414

Ubuntu安装Rust的系统级依赖与rustup全流程指南

Rust 是一门系统级编程语言,其编译器 rustc 和构建工具 cargo 严重依赖 Linux 系统底层能力。理解 build-essential(含 gcc、g++、make、libc6-dev)等系统包的作用机制,是解决 'command not found: rustc' 或 'linker cc not found' 等高频问题的技术前提。rustup 作为官方推荐的工具链管理器,并非简单二进制分发器,而是通过动态下载、符号链接和 PATH 注入实现多版本隔离,其可靠性直接受限于 Shell 初

chuange6363的博客 549

FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库

FFmpeg若要访问https视频,就必须集成第三方的openssl库,但编译FFmpeg时却默认关闭了openssl。为了让App能够播放采用https的在线视频,需要编译安装并启用openssl。

aqi00的博客 918

Miniconda Python3.11环境安装cryptography库实战避坑指南

在Python生态中,依赖管理是开发与部署的关键环节,尤其当项目涉及底层C扩展和系统库链接时。Miniconda作为轻量级环境管理工具,通过创建隔离的Python环境解决版本冲突,但其与系统库的路径隔离机制,在安装依赖OpenSSL等原生库的包时可能引发兼容性问题。从技术价值看,正确管理此类依赖能确保加密、数据签名等安全功能的稳定运行,是金融、数据安全等领域应用开发的基石。本文聚焦于cryptography这一广泛用于加密签名的Python库,针对其在Miniconda搭配Python 3.11环境下的安装

weixin_30911451的博客 309

Audacity:免费开源的多轨音频编辑器,十分钟录出第一期播客

Audacity 是一款免费开源的音频编辑器与录音工具,覆盖多轨录音、波形剪辑、降噪、均衡、混音等常用能力,能直接读写 MP3、WAV、FLAC 等二十多种格式,Windows、macOS、Linux 三个平台都能跑。对播客创作者、配音工作者和音乐爱好者来说,它是不花一分钱就能上手的专业音频起点。 ## 选它做音频编辑的三个理由 **专业效果不花钱。** 付费工作站里的多轨混音、噪声抑制、参数

gitblog_01041的博客 902

交叉编译 MQTT/Mosquitto

Eclipse Mosquitto 是一个开源(EPL/EDL许可)消息代理,它实现了 MQTT 协议版本 5.0、3.1.1 和 3.1。Mosquitto 重量轻,适用于从低功耗单板计算机到全服务器的所有设备。MQTT 协议提供了一种使用发布/订阅模型执行消息传递的轻量级方法。这使得它适用于物联网消息传递,如低功耗传感器或移动设备,如手机、嵌入式计算机或微控制器。Mosquitto 项目还提供了一个用于实现 MQTT 客户端的 C 库,以及非常流行的和命令行 MQTT 客户端。

bluebird_shao的专栏 1962

APB Timer验证环境搭建——学习笔记(1)

以下为个人学习笔记,如有疏漏,请大家指正补充~~APB Timer是一个简单的下行计数器,包括一个32位计数器和一组比较器,可以实现多种计时功能。包括生成一次性中断或者定时中断。

qq_41651535的博客 1577

【openssl】build error with “bits/c++config.h“

用intel编译器编译openssl报

a664787022的博客 241

Zephyr,设备树概述

Zephyr使用设备树(DTS)描述硬件配置,通过设备树源码和绑定文件生成C头文件供开发使用。设备树采用树状结构,节点对应硬件设备,属性描述硬件特性。示例展示了I2C总线及其外设的节点层级关系,包括单元地址、兼容性标识等关键属性。构建系统将设备树转换为devicetree.h中的宏,使开发者能通过DT_前缀宏访问硬件信息,同时保留Kconfig覆盖默认值的能力。

汽车电子软件领域知识分享 720

Python编译安装SSL模块缺失问题深度解析与解决方案

SSL/TLS是现代网络通信的基石,为数据传输提供加密、身份验证和完整性保护。其核心原理基于非对称加密、对称加密和数字证书体系,确保客户端与服务器之间的安全握手。在Python生态中,SSL模块是实现HTTPS请求、pip包管理、API调用等安全功能的技术基础。然而,从源代码编译Python时,常因OpenSSL开发包缺失、路径配置错误或版本冲突,导致SSL模块无法正确链接,进而引发pip安装失败、网络请求异常等问题。本文针对这一高频痛点,系统梳理了从原理诊断到环境配置的完整解决方案,涵盖Linux、mac

weixin_33981932的博客 363

视频倍速 - 在线调倍速的加速器APP工具

一刀工具箱APP提供一键可将手机上的视频倍速播放,可以调整视频倍速的加速器,调节视频的速度也就是调节视频的播放速度!一键可将手机上的视频倍速播放,可以调整视频倍速的加速器,调节视频的速度也就是调节视频的播放速度!视频倍速-在线调倍速的加速器-一刀工具箱APP。...

无涯教程 7553

为什么BGA焊点总在四个角先坏?一次热-振耦合仿真给你讲明白

本文通过Ansys Workbench进行热-振耦合仿真,深入分析了BGA焊点在四个角点先失效的机理。研究发现,角点焊点由于CTE失配、振动载荷放大及几何应力集中等因素,承受的等效塑性应变和动态应力显著高于中心区域,导致其疲劳寿命大幅降低。仿真数据揭示了角点焊点的应力分布和蠕变特性,为电子封装可靠性设计提供了重要依据。

weixin_42535461的博客 439

arm linux gnueabi g,g77 arm 编译器

GoalQuickly build nodejs for an ARM target system using a pre-built toolchain. The first part of these instructions should apply to most cross-compiling situations.Cross-compilingYou'll need a prebuil...

weixin_36439236的博客 281

FANUC机器人PROFINET通讯方式组态

6 然后对模块进行命名及更改IP地址,点击“Network Detection”,进行扫描,会生成下图,双击商科模块会生成下边的对话框,对模块进行命名及更改IP地址,在“Permanent Name”处点对勾,完成后点击“Apply Name及Apply”进行命名。此处注意,上图左上在线在不了,网络扫描处上面也灰色的,扫描不了。5双击abcc-prt-2-port RT(FW1.13),生成下面图标,在右边点击1、2把原来内容删掉,从新在左侧加载 ,使1、2是输出,3、4为输入,完成后点击OK。

dxs93的博客 8425
上一篇: FIFO阻塞式的打开和读写,管道阻塞式的读写
下一篇: C++编写Windows服务
nodeathphoenix
博客等级 码龄16年 97粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值