版本 | 作者 | 日期 | 备注 |
---|---|---|---|
0.1 | ZY | 2019.5.31 | 初稿 |
4.24的源码结构如下:
.
├── aclocal.m4
├── autogen.sh
├── Changes
├── compile
├── config.guess
├── config.h.in
├── config.sub
├── configure
├── configure.ac
├── depcomp
├── ev.3
├── ev.c
├── event.c
├── event.h
├── ev_epoll.c
├── ev.h
├── ev++.h
├── ev_kqueue.c
├── ev.pod
├── ev_poll.c
├── ev_port.c
├── ev_select.c
├── ev_vars.h
├── ev_win32.c
├── ev_wrap.h
├── install-sh
├── libev.m4
├── LICENSE
├── ltmain.sh
├── Makefile.am
├── Makefile.in
├── missing
├── mkinstalldirs
├── README
├── Symbols.ev
├── Symbols.event
└── TODO
0 directories, 37 files
看到configure按照以往编译开源库的经验就可以基本确定这个是configure脚本系的编译方式了,那么按照我们之前源码编译一些开源库的方式,对于configure系(可以看我的博客里交叉编译php等一些总结),基本上通过configure配置一下编译器、安装位置等,然后运行configure这个shell脚本就会生成Makefile,接着make编译、make install安装即可(必要时加上root权限)。
这里再说一下正常编译安装到Ubuntu等的方式以及交叉编译的方式。
正常编译(正常编译一般不需要指定安装目录、编译器以及宿主环境,所以直接默认即可):
./configure
make
sudo make install
至于使用时一个是加上头文件
#include <ev.h>
一个就是链接时
-lev
交叉编译(confgure脚本配置交叉编译器、宿主环境、安装位置):
CC=arm-linux-gcc ./configure --host=arm-linux --prefix=/home/zy/work_dir/libev-4.24/arm-linux-ev/
make
make install
结果:
$ tree .
.
├── include
│ ├── event.h
│ ├── ev.h
│ └── ev++.h
├── lib
│ ├── libev.a
│ ├── libev.la
│ ├── libev.so -> libev.so.4.0.0
│ ├── libev.so.4 -> libev.so.4.0.0
│ └── libev.so.4.0.0
└── share
└── man
└── man3
└── ev.3
5 directories, 9 files
编译和链接则由于没有安装到系统路径需要使用-I指定头文件位置以及-L指定库路径。