linux编程libevent安装
linux编程libevent安装
下载libevent-2.1.8-stable.tar.gz,解压
tar -zxf libevent-2.1.8-stable.tar
或者
mkdir 321
tar -zxf libevent-2.1.8-stable.tar -C ./321
进入目录
cd libevent-2.1.8-stable
ls -la
这时,我们可以看到有一些是可以执行的。
执行
./configure
生成makefile,执行make命令
make
测试
进入sample目录
cd sample
看一下hello-world.c
文件,看到端口9995
#include <string.h>
#include <errno.h>
#include <stdio.h>
#include <signal.h>
#ifndef _WIN32
#include <netinet/in.h>
# ifdef _XOPEN_SOURCE_EXTENDED
# include <arpa/inet.h>
# endif
#include <sys/socket.h>
#endif
#include <event2/bufferevent.h>
#include <event2/buffer.h>
#include <event2/listener.h>
#include <event2/util.h>
#include <event2/event.h>
static const char MESSAGE[] = "Hello, World!\n";
static const int PORT = 9995;
static void listener_cb(struct evconnlistener *, evutil_socket_t,
struct sockaddr *, int socklen, void *);
static void conn_writecb(struct bufferevent *, void *);
static void conn_eventcb(struct bufferevent *, short, void *);
static void signal_cb(evutil_socket_t, short, void *);
int
main(int argc, char **argv)
{
struct event_base *base;
struct evconnlistener *listener;
struct event *signal_event;
struct sockaddr_in sin;
执行
启动终端1,执行例子自带的hello-world程序。
$ ./hello-world
启动终端2,执行命令nc 127.1 9995
,返回Hello, World!
后立即断开,测试成功。
$ nc 127.1 9995
Hello, World!
编译hello-world
这里生成hello-world还是会报错,所以要安装一下。
$ gcc hello-world.c -o hello -levent
安装
$ sudo make install
...
...
Libraries have been installed in:
/usr/local/lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the 'LD_RUN_PATH' environment variable
during linking
- use the '-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to '/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
...
...
$ gcc hello-world.c -o hello -levent
可以看到libevent被安装在/usr/local/lib
。
动态库问题
$ cd /etc/ld.so.conf.d
$ ls
i386-linux-gnu.conf libc.conf x86_64-linux-gnu.conf
解决方法
修改etc/ld.so.conf
文件。
a. 动态库路径添加到该文件中 - 绝对
b. sudo ldconfig
查看
$ cat libc.conf
# libc default configuration
/usr/local/lib
还没有评论,来说两句吧...