在ubuntu中安装libevent库遇到的问题
来源:互联网 发布:免费股票预测软件 编辑:程序博客网 时间:2024/03/29 10:26
1.在ubuntu的终端中安装libevent到任意目录下,我选择的是/home/wayne/libevent/
命令如下:
wget https://sourceforge.net/projects/levent/files/libevent/libevent-2.0/libevent-2.0.22-stable.tar.gz
tar –xzvf libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable
./configure --prefix=/home/mydir/libevent
make && make install
2.在使用libevent的头文件过程中,借用网上的例子:
#include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h>#include <unistd.h>#include <iostream>#include <event.h> using namespace std; #define PORT 25341 #define BACKLOG 5 #define MEM_SIZE 1024 struct event_base* base; struct sock_ev { struct event* read_ev; struct event* write_ev; char* buffer; }; void release_sock_event(struct sock_ev* ev) { event_del(ev->read_ev); free(ev->read_ev); free(ev->write_ev); free(ev->buffer); free(ev); } void on_write(int sock, short event, void* arg) { char* buffer = (char*)arg; send(sock, buffer, strlen(buffer), 0); free(buffer); } void on_read(int sock, short event, void* arg) { struct event* write_ev; int size; struct sock_ev* ev = (struct sock_ev*)arg; ev->buffer = (char*)malloc(MEM_SIZE); bzero(ev->buffer, MEM_SIZE); size = recv(sock, ev->buffer, MEM_SIZE, 0); printf("receive data:%s, size:%d\n", ev->buffer, size); if (size == 0) { release_sock_event(ev); close(sock); return; } event_set(ev->write_ev, sock, EV_WRITE, on_write, ev->buffer); event_base_set(base, ev->write_ev); event_add(ev->write_ev, NULL); } void on_accept(int sock, short event, void* arg) { struct sockaddr_in cli_addr; int newfd; socklen_t sin_size; struct sock_ev* ev = (struct sock_ev*)malloc(sizeof(struct sock_ev)); ev->read_ev = (struct event*)malloc(sizeof(struct event)); ev->write_ev = (struct event*)malloc(sizeof(struct event)); sin_size = (socklen_t)sizeof(struct sockaddr_in); newfd = accept(sock, (struct sockaddr*)&cli_addr, &sin_size); event_set(ev->read_ev, newfd, EV_READ|EV_PERSIST, on_read, ev); event_base_set(base, ev->read_ev); event_add(ev->read_ev, NULL); } int main(int argc, char* argv[]) { cout<<"tcp test start...wait..."<<endl; struct sockaddr_in my_addr; int sock; sock = socket(AF_INET, SOCK_STREAM, 0); int yes = 1; setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)); memset(&my_addr, 0, sizeof(my_addr)); my_addr.sin_family = AF_INET; my_addr.sin_port = htons(PORT); my_addr.sin_addr.s_addr = INADDR_ANY; bind(sock, (struct sockaddr*)&my_addr, sizeof(struct sockaddr)); listen(sock, BACKLOG); struct event listen_ev; base = event_base_new(); event_set(&listen_ev, sock, EV_READ|EV_PERSIST, on_accept, NULL); event_base_set(base, &listen_ev); event_add(&listen_ev, NULL); event_base_dispatch(base); return 0; }
然后利用g++编译时,会提示
原因是,没有将libevent的include路径设置为系统变量中,所以提示找不到头文件。
使用命令:
gedit /etc/profile
在profile文件的末尾加上
export CPLUS_INCLUDE_PATH=/home/mydir/libevent/include/:$CPLUS_INCLUDE_PATH
. /etc/profile
此问题解决
3.再重新编译时,又出现 下面问题:
原因是g++ -o mytcp mytcp.cpp应该改成g++ -o mytcp mytcp.cpp -levent,这样,上面错误解决
4.但是编译时,还是有一个问题:
原因是没有安装libevent-dev。
使用命令apt-get install libevent-dev安装libevent-dev,问题解决,使用libevent库的c++程序可以通过编译了。
- 在ubuntu中安装libevent库遇到的问题
- 在UBUNTU中安装NS2遇到的问题
- 在安装 Ubuntu 14.04 中可能遇到的问题
- 在Ubuntu中安装软件遇到的问题
- 在虚拟机上安装UBUNTU过程中遇到的问题
- 虚拟机中安装ubuntu遇到的问题
- 在Ubuntu中安装Qt SDK时候遇到需要安装C++编译器的问题
- 在virtualbox中安装ubuntu遇到问题及方法记录
- 在安装数据库中遇到的问题:
- 在Ubuntu中编译、安装 gcc4.1.1 过程以及遇到的问题
- 在Ubuntu中编译、安装 gcc4.1.1 过程以及遇到的问题
- 在VMware中安装ubuntu遇到每次开机都需要重新联网的问题
- 编译libevent遇到的问题
- Python在ubuntu上面的安装,遇到的问题,以及一些有用的python库安装
- opencv1.0 在 ubuntu 下的安装遇到的问题
- 在ubuntu下安装vim时遇到的问题
- ubuntu 在安装软件时遇到的一些问题
- 在ubuntu下安装disksim时遇到的问题
- 重新启动Linux 下oracle 数据
- Android开源项目SlidingMenu深切解析
- 直接插入排序
- 51nod 1421 最大MOD值 (暴力枚举)
- 最大矩形面积
- 在ubuntu中安装libevent库遇到的问题
- nodejs基础
- pageadmin企业建站系统为中小企业轻松搭建企业网站
- Android SlidingMenu 使用详解
- 程序两三事(一)
- 5
- python 用xlrd及xlutils模块 复制excel文件
- JSON转为字符串,字符串转为JSON格式
- 表单帮助方法