minix3下安装libevent

2023-05-16

    libevent是一个c语言编写的事件框架,支持异步IO、定时器、信号事件。它支持跨平台,大部分都是在linux下安装并使用,今天介绍在unix系统minix3上的安装。

    minix3上编译环境是clang,clang++,并不是我们常见的gcc,g++,所以在进行源码编译的时候,需要指定系统编译器。再一个就是minix3上没有/usr/local这个目录,如果直接configure安装不指定libevent安装前缀prefix,那么它就会安装到/usr/local目录下,这个目录并不是系统设定的,所以它的包含文件,库目录文件不会被系统搜索到,最后在使用libevent库的时候,需要我们手动添加include dir,lib dir,为了减少不必要的麻烦,我们指定configure时的前缀prefix为/usr,这样,libevent的头文件会安装到/usr/include下,而依赖库文件会安装到/usr/lib目录下。

    编译安装过程:

    1、下载libevent,这里官网是https://libevent.org/,下载地址是:https://github.com/libevent/libevent/releases/download/release-2.1.10-stable/libevent-2.1.10-stable.tar.gz。

    2、解压

    3、configure、make 、 make install安装三步曲。

    这里进行configure的时候,需要注意,因为minix3.3.0版本没有gcc,g++,但是有clang,我们需要指定clang为c compiler,所以在configure的时候需要指定CC=/usr/pkg/bin/clang,我的这个机器本来已经安装了openssl,但是却找不到openssl.pc文件,所以提示没有找到openssl依赖库,只好禁用openssl,使用命令--disable-openssl

./configure --prefix=/usr CC=/usr/pkg/bin/clang --disable-openssl

    这一步没有报错,就可以进行下面的编译和安装了

#make
#make install

    下面的打印信息是我 make install的打印信息:

# make install
make  install-am
 ./install-sh -c -d '/usr/bin'
 /usr/bin/install -c event_rpcgen.py '/usr/bin'
 ./install-sh -c -d '/usr/lib'
 /bin/sh ./libtool   --mode=install /usr/bin/install -c   libevent.la libevent_core.la libevent_extra.la libevent_pthreads.la '/usr/lib'
libtool: install: /usr/bin/install -c .libs/libevent.lai /usr/lib/libevent.la
libtool: install: /usr/bin/install -c .libs/libevent_core.lai /usr/lib/libevent_core.la
libtool: install: /usr/bin/install -c .libs/libevent_extra.lai /usr/lib/libevent_extra.la
libtool: install: /usr/bin/install -c .libs/libevent_pthreads.lai /usr/lib/libevent_pthreads.la
libtool: install: /usr/bin/install -c .libs/libevent.a /usr/lib/libevent.a
libtool: install: chmod 644 /usr/lib/libevent.a
libtool: install: ranlib /usr/lib/libevent.a
libtool: install: /usr/bin/install -c .libs/libevent_core.a /usr/lib/libevent_core.a
libtool: install: chmod 644 /usr/lib/libevent_core.a
libtool: install: ranlib /usr/lib/libevent_core.a
libtool: install: /usr/bin/install -c .libs/libevent_extra.a /usr/lib/libevent_extra.a
libtool: install: chmod 644 /usr/lib/libevent_extra.a
libtool: install: ranlib /usr/lib/libevent_extra.a
libtool: install: /usr/bin/install -c .libs/libevent_pthreads.a /usr/lib/libevent_pthreads.a
libtool: install: chmod 644 /usr/lib/libevent_pthreads.a
libtool: install: ranlib /usr/lib/libevent_pthreads.a
 ./install-sh -c -d '/usr/include'
 /usr/bin/install -c -m 644 include/evdns.h include/event.h include/evhttp.h 
include/evrpc.h include/evutil.h '/usr/include'
 ./install-sh -c -d '/usr/include/event2'
 /usr/bin/install -c -m 644 include/event2/buffer.h include/event2/buffer_compat.h 
include/event2/bufferevent.h include/event2/bufferevent_compat.h 
include/event2/bufferevent_ssl.h include/event2/bufferevent_struct.h include/event2/dns.h 
include/event2/dns_compat.h include/event2/dns_struct.h include/event2/event.h 
include/event2/event_compat.h include/event2/event_struct.h include/event2/http.h 
include/event2/http_compat.h include/event2/http_struct.h include/event2/keyvalq_struct.h 
include/event2/listener.h include/event2/rpc.h include/event2/rpc_compat.h 
include/event2/rpc_struct.h include/event2/tag.h include/event2/tag_compat.h 
include/event2/thread.h include/event2/util.h include/event2/visibility.h 
'/usr/include/event2'
 ./install-sh -c -d '/usr/include/event2'
 /usr/bin/install -c -m 644 include/event2/event-config.h '/usr/include/event2'
 ./install-sh -c -d '/usr/lib/pkgconfig'
 /usr/bin/install -c -m 644 libevent.pc libevent_core.pc libevent_extra.pc libevent_pthreads.pc '/usr/lib/pkgconfig'
 

    从中可以看出头文件全部加入了/usr/include目录,库文件加入了/usr/lib目录,这样系统就能找到他们的位置了。

    可以编写一个定时器来测试一下:

   hello.c

#include <stdio.h>
#include <event.h>
#include <time.h>

struct event ev;
struct timeval tv;

void timer_cb(int fd, short event, void *arg)
{
    printf("timer_cb\n");
    event_add(&ev, &tv);
}

int main()
{
    struct event_base *base = event_init();
    tv.tv_sec = 1;
    tv.tv_usec = 0;

    event_set(&ev, -1, 0, timer_cb, NULL);
    event_base_set(base, &ev);
    event_add(&ev, &tv);
    event_base_dispatch(base);

    return 0;
}

    编译:这里就需要手动设定依赖库

#clang -o hello hello.c -levent

  编译运行打印信息:

# clang -o hello hello.c 
/var/tmp/hello-2fbefe.o: In function `timer_cb':
hello.c:(.text+0x43): undefined reference to `event_add'
/var/tmp/hello-2fbefe.o: In function `main':
hello.c:(.text+0x81): undefined reference to `event_init'
hello.c:(.text+0xcc): undefined reference to `event_set'
hello.c:(.text+0xe1): undefined reference to `event_base_set'
hello.c:(.text+0xfc): undefined reference to `event_add'
hello.c:(.text+0x10a): undefined reference to `event_base_dispatch'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
# clang -o hello hello.c -levent
# ./hello
timer_cb
timer_cb
timer_cb
timer_cb
^C
# 

     不设定依赖库,编译报错;若编译通过直接运行,控制台会间隔1秒打印timer_cb。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

minix3下安装libevent 的相关文章

  • libevent实现的HTTP Server

    在使用C语言编码时 有时候需要实现一个HTTP接口 我们可以选择使用libevent库来实现 以下代码演示了使用libevent 并同时支持多线程处理HTTP的请求 头文件 引入的头文件 span class token macro pro
  • libevent详解四(http服务)

    创建基于libevent的http服务 先上代码 span class token macro property span class token directive keyword include span span class toke
  • LibEvent-Demo

    libevent test cpp 定义控制台应用程序的入口点 include 34 stdafx h 34 pragma comment lib 34 ws2 32 lib 34 pragma comment lib 34 wsock32
  • libevent 的http模块实现http服务器

    首先声明 xff0c libevent的http模块是为单线程设计的 xff0c 如果业务逻辑中有耗时操作 xff0c 则需要自行设计线程池以便提高吞吐量 xff0c 每个工作线程中都要运行一个event base loop和一个evhtt
  • http服务器使用libevent实现get和post请求实例

    最近在工作中使用到了libenevt封装的http xff0c 在做curl模拟get post请求时遇到了一些问题 xff0c 今天就记录下正确的http服务端处理方法 xff0c 欢迎观摩 一 libevent介绍 首先 xff0c 咱
  • libevent之eventop

    功能 xff1a IO处理模型 架构 xff1a 实现 xff1a event internal h定义eventop结构体 xff0c 在 c文件实例化生成对应的全局对象 xff0c 如在poll c中生成pollops对象 event
  • libevent的http服务详解

    libevent的http服务详解 即远程调用 xff0c 得到一个call ID然后验证外部远程参数 span class token function evrpc request cb span span class token pun
  • minix3下安装libevent

    libevent是一个c语言编写的事件框架 xff0c 支持异步IO 定时器 信号事件 它支持跨平台 xff0c 大部分都是在linux下安装并使用 xff0c 今天介绍在unix系统minix3上的安装 minix3上编译环境是clang
  • Centos libevent install

    1 下载安装包 xff1a 官网 http libevent org libevent 2 1 8 stable tar gz 2 解压 tar zxvf libevent 2 1 8 stable tar gz 3 进入目录 cd lib
  • CentOS7下安装libevent

    前言 CentOS7下安装libevent网络库 步骤 创建一个文件夹libevent xff08 方便后期维护管理 xff09 mkdir libevent 官网下载源码包 可以在本机下载然后文件传输 xff0c 也可以直接在linux下
  • libevent库学习(1)

    一 初识 1 libevent介绍 Libevent 是一个用C语言编写的 轻量级的开源高性能事件通知库 主要有以下几个亮点 事件驱动 event driven 高性能 轻量级 专注于网络 不如 ACE 那么臃肿庞大 源代码相当精炼 易读
  • libevent实现UDP通信

    因为libevent在底层上是没有直接支持udp通信 并且在Windows上 对于udp的iocp操作 libevent也不支持 实际Windows本身是支持IOCP实现UDP通信的 不过仍然可以利用libevent实现udp通信 调试源码
  • libevent 源码分析丨libevent组件构成以及编程要领

    1 前言 Libevent是一个轻量级的开源高性能网络库 使用者众多 研究者更甚 相关文章也不少 写这一系列文章的用意在于 一则分享心得 二则对libevent代码和设计思想做系统的 更深层次的分析 写出来 也可供后来者参考 文章较长 建议
  • libevent服务端,单线程应用

    libevent版本 libevent 2 1 12 stable include
  • Linux高性能I/O框架库Libevent介绍

    C C Linux服务器开发 后台架构师知识体系 这篇文章主要讲一下Libevent库的内容 顺便对I O库整体做个介绍 Linux服务器程序必须处理的三类事件 I O事件 信号 定时事件 在处理这三类事件时我们通常需要考虑如下三个问题 统
  • libevent(6)windows上使用iocp网络模型

    windows操作系统上不能使用epoll模型 只能使用iocp网络模型 这里我把怎么在windows上使用iocp的代码直接贴上 include
  • libevent服务端,多线程应用

    下面的方式是创建多个event base来处理多线程的 主event base用来处理连接请求 各个子event base用来处理读写和关闭请求 另一种方式是 所有的连接 读写 断开操作 都在一个event base里面 然后当读到数据时
  • libevent涉及的知识积累

    O 1 实现单链表插入删除 阅读libevent源码时发现了linux提供的一个链表 宏定义如下 define LIST ENTRY type struct struct type le next next element struct t
  • Java 中是否有与 libevent 相当的工具?

    我编写了一个高吞吐量服务器 它在自己的线程中处理每个请求 对于传入的请求 有时需要对一个或多个后端执行 RPC 这些后端 RPC 由单独的队列和线程池处理 这对创建的线程数和后端的最大连接数提供了一些限制 它会进行一些缓存以重用客户端并节省
  • Android 交叉编译 libevent

    我一直在尝试将 libevent 交叉编译到 Android 我想知道我做错了什么并获得一些帮助 我尝试构建的版本是 libevent 2 0 19 stable 我开始按照以下描述的步骤进行操作http warpedtimes wordp

随机推荐

  • electron报错:Uncaught Error: A dynamic link library (DLL) initialization routine failed

    如题所示 xff0c 我们在进行node 43 electron开发桌面应用的时候 xff0c 经常会遇到这样的问题 xff1a 根据提示是因为ref依赖模块没有合适的编译版本 xff0c 但是我们进行npm install的时候没有报错啊
  • C语言 利用冒泡排序法对10个字符由小到大排序

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • truffle+ganache-cli构建简单以太坊智能合约并编译部署

    以前接触过以太坊工具链来做区块链练手项目 xff0c 后来荒废了 xff0c 如今再次捡起来 xff0c 算是回忆和加深 之前可能因为网络的原因 xff0c 在truffle各种初始化编译合成智能合约都遇到了好多问题 xff0c 如今再次尝
  • docker-compose搭建mongo+elasticsearch+graylog运行环境

    graylog是一个小型的开源日志收集 分析 展示框架 主要graylog运行需要mongo elasticsearch xff0c 所以他们就组成了一个小的整体 一般在虚拟机上搭建 xff0c 可以分开安装部署 xff0c 但是既然是一个
  • word文档中插入图片显示不全解决办法

    在windows下写word文档 xff0c 正常情况下 xff0c 我们应该不会遇到插入图片显示不全的问题 xff0c 好像是如果在已有的文档中插入图片 xff0c 比如文档中间插入 xff0c 图片没办法自动扩展空间 xff0c 这就导
  • quasar构建linux版本electron项目以及如何让electron程序在linux下运行

    quasar构建 xff0c 默认命令是 xff1a quasar build m electron 如果要支持linux xff0c 通常是直接加参数 target linux或者简写 T linux quasar build m ele
  • docker容器改变时区

    默认情况下的docker容器启动之后 xff0c 系统时间是UTC时间 xff0c 这导致和我们的北京时间相差8小时 xff0c 会引出很多问题 有一些容器是和项目一起构建的 xff0c 我们可以在构建的时候 xff0c 将系统时区修改为A
  • elasticsearch加入中文分词器elasticsearch-analysis-ik插件

    前言 elasticsearch作为一个分布式弹性存储与检索系统 xff0c 默认是不支持中文分词的 xff0c 但是呢 xff0c 这个工作有人做 xff0c 估计都是中国人做的吧 什么是中文分词呢 xff0c 简单来说 xff0c 就是
  • c语言自定义tcp协议实现socket通信

    一般的tcp协议示例 xff0c 大家给出的demo都是类似一个helloworld的示例 xff0c 简单罗列了socket建立 xff0c 创建连接 xff0c 发送数据 xff0c 关闭连接的过程 xff0c 实际上tcp通信确实也就
  • c语言自定义tcp协议实现socket通信(windows版本)

    前面一篇博客介绍了mac linux下通过C语言自定义协议实现socket通信的示例 xff0c 因为大部分api与windows还有很多区别 xff0c 这里就特意把windows下的tcp通信实例给介绍一下 无论是linux xff0c
  • macos升级体验

    周末在家里把macos从10 11 6版本升到了10 14 6版本 xff0c 其中的过程基本大同小异 后面想继续升级 xff0c 发现遇到了问题 网上有的说需要一步一步来升级 xff0c 如果是10 11 xff0c 需要先升级到10 1
  • xcode开发c语言开启多target

    xcode开发c语言 xff0c 在选择project template时选择command line tool xff0c 后面填入product name xff0c 最后选择存储位置就可以了 但是一般而言c语言项目只有一个main函数
  • vaex 将csv转换为hdf5

    I have a massive CSV file which I can not fit all into memory at one time How do I convert it to HDF5 We are working to
  • ubuntu1804源码编译jdk8

    这里纯粹自己弄着玩 xff0c 因为以前没有成功过 xff0c 这里记录一下 xff0c 就是让遇到问题的人可以规避问题 xff0c 快速编译自己的jdk 相信很多学java的人都看过或者了解过一本书 深入理解java虚拟机 xff0c 里
  • vmware安装minix并开启x11

    最近突然想弄一下minix这个老牌的系统 vmware安装minix3虚拟机 xff0c 其实很简单的 xff1a 1 新建虚拟机 xff0c 选择经典 2 选择客户机操作系统 xff1a 其他 xff0c 版本 xff1a 其他 64位
  • minix3通过pkgin_cd安装二进制包

    在安装完minix3虚拟机之后 xff0c 如果要进行其他工具的安装 xff0c 默认需要借助pkgin xff0c 这个需要先更新 pkgin up xff0c 然后安装各种可以被下载的包 本人试了几次之后 xff0c 发现pkgin i
  • clang: error: unable to execute command: Executable “ld“ doesn‘t exist!

    如题所示 xff0c 我在minix3中直接安装了clang xff0c 然后使用如下命令编译c程序报错 clang hello c o hello clang error unable to execute command Executa
  • c语言结构体内存对齐问题

    c语言中结构体使用是非常广泛的 xff0c 但是结构体有一个问题 xff0c 就是如果开头的字段属性是字符类型 char xff0c 紧跟着的是其他类型 xff0c 比如整型 长整型 双精度 浮点型 xff0c 这时候结构体的大小会发生改变
  • java通过jni调用native method

    jdk中规定了native method xff0c 每一个native method背后对应有一个动态链接库来支持它 xff0c 在windows系统上 xff0c 就是dll后缀的文件 native method是需要通过c c 43
  • minix3下安装libevent

    libevent是一个c语言编写的事件框架 xff0c 支持异步IO 定时器 信号事件 它支持跨平台 xff0c 大部分都是在linux下安装并使用 xff0c 今天介绍在unix系统minix3上的安装 minix3上编译环境是clang