vs2013+visualGDB+虚拟机ubuntu 编译libev例子

来源:互联网 发布:oracle数据库保存 编辑:程序博客网 时间:2024/05/19 22:49

在虚拟机中编译libev成功

  • 在虚拟机上下载libev的源码并编译,这步很简单,Makefile文件都有,只需make,autoconfigure,make install即可
  • 在虚拟机中复制官网的libev例子:
#include <stdio.h>#include <ev.h> //ev库头文件//定义一个ev_TYPE 的结构体ev_io stdin_watcher;//定义一个stdin的观测者ev_timer timeout_watcher;//所有的watcher的回调函数都有相似的特点//当stdin有可读的数据时,将会调用下面这个回调函数static void stdin_cb(EV_P_ ev_io *w, int revents){    puts("stdin ready");    //每一次时间都必须用对应的停止函数,手动的停止其watcher    ev_io_stop(EV_A_ w);    //这将导致所有嵌套执行的ev_run停止监听    ev_break(EV_A_ EVBREAK_ALL);}//这是一个回调函数,用于定时器回调static void timeout_cb(EV_P_ ev_timer *w, int revents){    puts("timeout");    //这将导致最早运行的ev_run停止监听    ev_break(EV_A_ EVBREAK_ONE);}int main(int argc, char **args){    //使用一般默认的事件循环    struct ev_loop *loop = EV_DEFAULT;    //初始化一个I/O watcher,然后启动它    ev_io_init(&stdin_watcher, stdin_cb, 0, EV_READ);    ev_io_start(loop, &stdin_watcher);    //初始化一个定时器watcher,然后启动它,只有一次,没有重复的5.5秒定时    ev_timer_init(&timeout_watcher, timeout_cb, 5.5, 0);    ev_timer_start(loop, &timeout_watcher);    //这里等待时间出发    ev_run(loop, 0);    //撤销监听退出程序    return 0;}

假如保存为server.c文件,编译gcc server.c -lev -o server
就能生成一个server可执行文件。
如果不能执行,那么需要在环境变量中添加:

export LD_LIBRARY_PATH=/usr/local/libexport LD_RUN_PATH=/usr/local/lib

在vs2013中编译

  1. 在本机windows下载并安装visualGDB4.2版本,若下最新版不知道为什么在检查工具链的时候出错
  2. 新建一个Linux项目,连接到虚拟机,并且将上面源码拷贝到项目的.c文件中
  3. 在VisualGDB Poject Propertis->Make file settings->Configuration Makefile settings->更改包含的库文件,增加/usr/local/lib(若是用apt-get install libev-dev下载的软件包,则是放在usr/lib下),和库名ev
0 0