linux include 编译,linux-如何使用OpenSSL include编译.c文件?

linux-如何使用OpenSSL include编译.c文件?

我正在尝试编译一个包含以下内容的小.c文件:

#include

#include

#include

#include

在我拥有.c文件的同一文件夹中,我拥有带有所有这些文件(以及更多文件)的/ openssl,也在突触包管理器中,我看到安装了OpenSSL,我正在尝试使用以下方法进行编译:

gcc -o Opentest Opentest.c -lcrypto

但我总是得到错误:

error: openssl/ssl.h: No such file or directory

error: openssl/rsa.h: No such file or directory

error: openssl/x509.h: No such file or directory

error: openssl/evp.h: No such file or directory

我要编译的文件只是一个.c文件,没有Makefile或./configure。

我已经尝试过:

env CFLAGS=-I/path/to/openssl/

并尝试再次编译,但我得到相同的错误。

我应该怎么做才能用openssl include进行编译?

7个解决方案

97 votes

您的包含路径表明您应该针对系统的OpenSSL安装进行编译。 您的软件包目录中不应包含.h文件-它应从libssl中提取它们。

普通的OpenSSL软件包(libssl)不包含.h文件-您还需要安装开发软件包。 在Debian,Ubuntu和类似发行版上,它的名称为libssl-dev,在CentOS,Fedora,Red Hat和类似版本上的名称为libssl-devel。

caf answered 2019-10-05T09:50:36Z

9 votes

使用-I标志正确地gcc。

-I

-I应指向包含openssl文件夹的目录。

Borealid answered 2019-10-05T09:51:14Z

6 votes

我的英语不是很好但我在中文网页上找到了针对此问题的补丁

百胜安装openssl百胜安装openssl-devel

安装此软件,并在centos 5.4和keepalived-1.2.7中进行测试]

user2317002 answered 2019-10-05T09:51:53Z

4 votes

如果OpenSSL标头位于当前目录的./openssl/ssl.h子目录中,请使用:

gcc -I. -o Opentest Opentest.c -lcrypto

预处理程序希望从-I选项中的“ .”中创建一个名称,例如“ 2555697279869869125632”,并在尖括号中指定该名称。 如果您在双引号中指定了名称(#include "openssl/ssl.h"),则可能永远不需要问这个问题。 Unix上的编译器通常会自动在当前目录中搜索用双引号引起来的标头,但对于在尖括号中引起的标头则不会这样做(#include )。 它是实现定义的行为。

您没有说OpenSSL库在哪里-您可能需要添加适当的选项和参数来指定它,例如'-L /opt/openssl/lib'。

Jonathan Leffler answered 2019-10-05T09:52:35Z

4 votes

从openssl.pc文件

prefix=/usr

exec_prefix=${prefix}

libdir=${exec_prefix}/lib

includedir=${prefix}/include

Name: OpenSSL

Description: Secure Sockets Layer and cryptography libraries and tools

Version: 0.9.8g

Requires:

Libs: -L${libdir} -lssl -lcrypto

Libs.private: -ldl -Wl,-Bsymbolic-functions -lz

Cflags: -I${includedir}

您可以从中记下Include目录路径和Libs路径。 现在,包含文件的前缀为-L。因此,您的包含文件选项应为-I//home/username/Programming。

(是的,我从上面的评论中得到了它)

这只是为了删除有关标头的日志。 您也可以提供-L选项与-lcrypto库链接。

Praveen S answered 2019-10-05T09:53:23Z

3 votes

您需要包括库路径(-L / usr / local / lib /)

gcc -o Opentest Opentest.c -L/usr/local/lib/ -lssl -lcrypto

这个对我有用。

Jeff Pal answered 2019-10-05T09:53:58Z

1 votes

对于此gcc错误,您应参考有关搜索路径的gcc文档。

简而言之:

1)如果将尖括号(<>)与#include一起使用,gcc将首先从系统路径(例如/ usr / local / include和/ usr / include等)搜索头文件。

2)-Ldir命令行选项指定的路径将在默认目录之前搜索。

3)如果在#include中将quotation(“”)与#include“ file”一起使用,则将首先搜索包含当前文件的目录。

因此,您的问题的答案如下:

1)如果要在源代码文件夹中使用头文件,请在#include指令中将<>替换为“”。

2)如果要使用-I命令行选项,请将其添加到编译命令行中。(如果在环境变量中设置CFLAGS,将不会自动引用它)

3)关于程序包配置(openssl.pc),我认为在构建配置中未明确声明的情况下不会引用它。

gzh answered 2019-10-05T09:55:15Z

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560624.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c向文件中插入数据_如何把数据写入顺序文件中,VBA代码中Write#语句的利用

大家好&#xff0c;我们今日继续讲解VBA代码解决方案的第132讲内容&#xff1a;使用 Write #语句把数据写入打开顺序文件中。在上一讲的内容中我们讲了打开一文本文件来写入数据的两种方法有&#xff1a;Append或Output&#xff0c;那么问题来了&#xff0c;如何往打开的文件中…

JavaScript变量声明+数据类型+数字格式+操作符+进制

文章目录1.那些高大上的概念术语都是指什么什么是web应用&#xff1f;什么是前台后台&#xff1f;怎么做网页界面呢&#xff1f;JavaScript可以应用到什么上面&#xff1f;2.JavaScript实例&#xff1a;3.语言基础变量声明数据类型基本数据类型&#xff1a;引用数据类型&#x…

linux查看帮助文档的命令,Linux如何使用查看一个命令的帮助文档呢?

摘要:下文讲述Linux操作系统中查看命令的帮助文档的方法分享&#xff0c;如下所示&#xff1b;实现思路:使用 --help命令即可查看命令自带的帮助文档信息例:查看ls命令的帮助信息[rootlocalhost test]# ls --helpUsage: ls [OPTION]... [FILE]...List information about the FI…

python如何更改entry属性_如何在Python3中更改Gtk3 Entry文本颜色?

我在我的应用程序中有一个Gtk.Entry()列表,我想改变其中一些文本的颜色.我尝试了以下方法&#xff1a;#!/usr/bin/python3# Filename: mywindow.pyfrom gi.repository import Gtkfrom gi.repository import Gdkclass MyWindow(Gtk.Window):def __init__(self):Gtk.Window.__ini…

linux 磁盘簇,linux系统exec簇工作原理

操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件。一个计算机系统是一个硬件和软件的共生体&#xff0c;它们互相依赖&#xff0c;不可分割。计算机的硬件&#xff0c;含有外围设备、处理器、内存、硬盘和其他的电子设备组成计算机的发动机。但是…

JavaScript 函数定义+内置函数使用+array对象+object类型

文章目录函数定义random()setInterval()setTimeout()数组对象object函数定义 两种格式&#xff1a; function 自定义函数名称(参数1&#xff0c;参数2&#xff0c;...&#xff0c;参数n){ //函数体 return 返回值; }函数表达式写法&#xff08;匿名函数&#xff09;&#xff…

jmeter进程和线程的区别_一文搞懂进程和线程的区别

计算机系统是由硬件和软件组成的&#xff0c;它们共同协作以运行应用程序。先来看下面这张一个典型的计算机系统的硬件组成图从上图中看出一个系统由 CPU、ALU(算术逻辑单元)、PC(程序计数器)、总线(贯穿整个系统的一组电子管道)、IO设备、主存等组成。这些硬件的管理都是由操作…

linux中split函数用法,Linux csplit 命令用法详解-Linux命令大全(手册)

csplitLinux csplit命令用于分割文件。将文件依照指定的范本样式予以切割后&#xff0c;分别保存成名称为xx00,xx01,xx02…的文件。若给予的文件名称为”-“&#xff0c;则csplit指令会从标准输入设备读取数据。语法csplit [-kqsz][-b][-f][-n][--help][--version][文件][范本样…

BOM+DOM+JavaScript读取与操作网页对象

DOM 网页的元素有多种定义方式&#xff0c;那我们怎么描述或指定页面上某个元素呢。为了统一方式&#xff0c;产生了document object model 标准 以HTML表单为例&#xff0c; 文本字段前面的标题由label标签声明 每个表单字段都通过id属性设置唯一的识别名称&#xff0c;用于让…

datax 导入数据中文乱码_DataX在有赞大数据平台的实践

文| 小木 on 大数据一、需求有赞大数据技术应用的早期&#xff0c;我们使用 Sqoop 作为数据同步工具&#xff0c;满足了 MySQL 与 Hive 之间数据同步的日常开发需求。随着公司业务发展&#xff0c;数据同步的场景越来越多&#xff0c;主要是 MySQL、Hive 与文本文件之间的数据同…

网页中嵌入JavaScript+事件触发程序

嵌入方式&#xff1a; 1.JavaScript代码与HTML写在同一个文档中 JavaScript代码要放在<script>和</script>标签之间 而且整个JavaScript代码最好放在</body>前&#xff0c;这样可以让浏览器先加载并显示主体 2.JavaScript代码单独存成.js文件&#xff0c;…

linux查看分区树形状态,查看Linux磁盘的分区状态(lsblk、blkid、parted)

②磁盘的管理是一个相当重要的环节&#xff0c;如果你想在系统里面新增一块磁盘&#xff0c;应该做一下几个操作2.命令格式lablk [选项] [设备文件名]3.选项-d&#xff1a;仅列出磁盘本身&#xff0c;并不会列出该磁盘的分区信息-f&#xff1a;同时列出该磁盘内的文件系统名称-…

sql相同顺序法和一次封锁法_数学专题 | Ep01 隔板法的妙用

数学专题(一) 隔板法的妙用浓度常见哪些问题?排列组合分堆&#xff1f;涂色&#xff1f;到底掌握透彻了吗&#xff1f;解析几何与韦达定理&#xff1f;公式总是记不住&#xff1f;应用题还不会解&#xff1f;除了写作(写作听我的)、逻辑(逻辑说)专题外&#xff0c;本周起我们也…

山东大学linux实验报告,山东大学操作系统实验四

一.实验内容&#xff1a;抽烟者问题。假设一个系统中有三个抽烟者进程&#xff0c;每个抽烟者不断地卷烟并抽烟。抽烟者卷起并抽掉一颗烟需要有三种材料&#xff1a;烟草、纸和胶水。一个抽烟者有烟草&#xff0c;一个有纸&#xff0c;另一个有胶水。系统中还有两个供应者进程&…

通过CDN引用jQuery库+jQuery的使用+网页实现计算器的功能

jQuery是什么&#xff1f;有什么用&#xff1f; jQuery是javascript库&#xff0c;其实就是一堆的js函数&#xff0c;方便我们来调用&#xff0c;提高我们的开发效率 免费开源&#xff0c;支持主流浏览器&#xff0c;简化选取网页元素的语法&#xff0c;简易的读取设置元素的…

amd cpu排行_最新AMD CPU排行出炉 E6版3000+夺魁

据消费调研中心ZDC统计结果显示&#xff0c;2006年3月最受用户关注的前十款AMD CPU中&#xff0c;Athlon64和Sempron两大系列产品平分秋色&#xff0c;各有五款产品入围。具体产品排行如下图所示。(图)2006年3月最受用户关注的前十款AMD CPU排名产品名称报价L2缓存(KB)插槽类型…

java异常及错误处理大纲

文章目录1.异常处理2. 自定义异常3. 断言及程序的测试4. 程序的调试1.异常处理 异常&#xff08;exception ) 又称为例外、差错、违例 对应着Java运行错误处理机制 基本写法 try{ 语句组 }catch(Exception ex){ 异常处理语句组&#xff1b; }import java.io.*; public cla…

linux dev alloc name,深入理解Linux网络技术内幕-设备注册和初始化(二)

NIC注册和注销的通用架构Linux系统中NIC网络设备驱动程序利用网络代码进行注册和注销有其通用的架构&#xff0c;这里以PCI Ethernet NIC为例&#xff0c;其他设备类型只是所以函数名称和调用方式不同&#xff0c;主要依据于设备总线提供的接口。其中(a)为设备注册的大致流程图…

外贸常用术语_外贸中常用的会计术语及付款方式术语 | 会计英语

点击上面“财经英语”关注公众号&#xff01;点击下面小程序加入: 学习圈财经英语 学习圈 预付现金 Cash advance 凭提货单支付现金 Cash against Bill of Lading (B/L) 凭单据付现款||凭装货单付现款 Cash against Documents 现金结存||现金差额 Cash balance 现收现付制||现金…

c语言中block做函数参数,c语言中的block

//block块(数据类型) 封装的一段具有特定功能的代码段//函数有函数名&#xff0c;block没有名字&#xff0c;也可以叫做匿名函数&#xff1b;函数不能做参数传递&#xff0c;block可以作为参数传递&#xff1b;//形式&#xff1a;/* 返回值类型,(^ block变量名)(参数列表)&…