下载并编译libuv

libuv需要自己手动下载源码,并手动编译。

当前目录为:/home/xlz/test/github/,在后面,会用$PATH来代替,我的系统的Debian8,64bit.

$git clone https://github.com/libuv/libuv.git

即可下载到libuv源码

然后$cd libuv 进入到libuv源码目录下,准备编译。

依次运行如下命令:

$ sh autogen.sh

$ ./configure

$ make

$ make check

$ sudo make install

备注:

如果提示缺少一些库,请自行安装,apt-get install packagename

如,我运行autogen.sh的时候,就提示缺少automake,libtoolize库:

xlz@debian:~/test/github/libuv$ sh autogen.sh

autogen.sh: 1: autogen.sh: automake: not found

autogen.sh: 33: test: Illegal number:

autogen.sh: 34: test: Illegal number:

libtoolize --copy

autogen.sh: 43: autogen.sh: libtoolize: not found

运行如下命令,手动安装,即可:

$ sudo apt-get install automake

$ sudo apt-get install libtool

编写测试代码:

在$PATH的libuv目录下新建xlz_test.c

/*

* xlz_test.c

* empty msg loop

* 这个例子新建了一个消息队列,但队列里没有任何消息,程序直接退出

* Created on 2016/9/10

*/

#include

#include

#include "include/uv.h"

int main(char argc, char *argv[])

{

uv_loop_t *loop = uv_loop_new(); // 可以理解为新建一个消息队列

uv_run(loop, UV_RUN_DEFAULT); // 启动消息队列,UV_RUN_DEFAULT模式下,当消息数为0时,就会退出消息循环。

printf("hello, world\n");

return 0;

}

编译及链接:

在$PATH的libuv目录下,命令行执行如下命令,如果当前文件夹下没有build目录,就请先创建一个build目录

$gcc -c xlz_test.c -o xlz_build/xlz_test.o // 编译,生成xlz_test.o文件

$gcc xlz_test.c -L/usr/local/lib/ -luv -o x_test // 链接生成可执行文件

//也可使用如下命令进行链接:

$gcc =o xlz_test xlz_test.o /usr/local/lib/libuv.so //生成目标文件要包含libuv.so库,这里需要绝对路径,因为我们用到了它里面的函数。

//$gcc -lpthread -o xlz_test xlz_build/xlz_test.o /usr/local/lib/libuv.a

上面第二条编译,连接libuv.a库的时候,我的是在这个目录下,因为我的系统都是Debian 8, 64bit,

可能不同的系统位置是不同的,有的人可能在/usr/lib64/下或者其他目录下,请自行定位。

注意:有的系统在链接为可执行文件后,执行程序时可能会报错,或者无法连接为可执行程序:

libtest: error while loading shared libraries: libuv.so.1: cannot open shared object file: No such file or directory

网上搜一下,这里主要原因是:ld提示找不到库文件,而库文件就在/usr/local/lib目录下。

链接器ld默认的目录是/lib/和/usr/lib,如果放在其他路径也可以,需要让ld知道库文件在哪里。

方案1:

编辑/etc/ld.so.conf文件,在新的一行中加入库文件所在目录;

然后执行

$ldconfig

以更新/etc/ld.so.cache文件;

方案2:

在/etc/ld.so.conf.d/目录下新建任何以.conf为后缀的文件,如

$sudo vim libuv.conf

在libuv.conf文件中加入库文件所得目录作为内容;

运行,如下命令,以更新/etc/ld.so.cache文件;

$sudo ldconfig

我参考别人博客,也选择方案2:

在/etc/ld.so.conf/目录下新建libuv.conf文件,并在libuv.conf文件中,把目录/usr/local/lib/加入其中。

该博主给出的理由,我很同意,如下:

本人觉得第二种办法更为方便,对于原系统的改动最小。因为/etc/ld.so.conf文件的内容是include /etc/ld.so.conf.d/*.conf

所以,在/etc/ld.so.conf.d/目录下加入的任何以.conf为后缀的文件都能被识别到。

ld.so.cache的更新是递增式的,就像PATH系统环境变量一样,不是从头重新建立,而是向上累加。

除非重新开机,才是从零开始建立ld.so.cache文件。

关于ld.so.cache文件,暂时就不深入研究了,后续慢慢学习吧,先学libuv要紧。

执行程序

如果前面没有错误的话,你会在$PATH下得到可执行程序文件test,在命令行下执行./xlz_test就可以得到如下结果了。

hello world

最后补张libuv的图

Linux下nginx编译安装教程和编译参数详解

这篇文章主要介绍了Linux下nginx编译安装教程和编译参数详解,需要的朋友可以参考下 一.必要软件准备1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码代码如下: # y ...

Linux下RocketMQ下载安装教程

一.下载 1.官网下载:下载地址   2.百度网盘下载:下载地址 提取码:0g5a java开发工具下载地址及安装教程大全,点这里. 更多深度技术文章,在这里. 二.安装及启动 1.将zip文件上传到 ...

linux下的powerline安装教程

powerline是一款比较炫酷的状态栏工具,多用于vim和终端命令行.先上两张效果图,然后介绍一下具体的安装教程. 图 1 powerline在shell下的效果图 图 2 powerline在vi ...

Linux下DB2数据库安装教程

最近因为工作需要在学习DB2数据库,本教程讲解DB2数据库在inux下的安装步骤. 安装前请查看 DB2版本和许可证 说明来增加了解,先弄明白改安装什么版本,这里我用的是最新的Express-C版本, ...

phpmyadmin在linux下通过sock安装教程

当初是按照 http://www.cnblogs.com/freeweb/p/5262852.html 地址参考安装,因为疏忽,未考虑到版本差异带来的影响(自身安装的是最新版 phpMyAdmin-4 ...

Linux(centos)下mysql编译安装教程

Linux下mysql编译安装教程 #查看linux发行版本 cat /etc/issue #查看linux内核版本号 uname -r 本文測试环境centOS6.6 一.Linux下编译安装MyS ...

Linux下的GitHub安装与简单配置教程 ~ 转载

Linux下的GitHub安装与简单配置教程   1.GitHub简介 Git是一个分布式版本控制系统,与其相对的是CVS.SVN等集中式的版本控制系统. 2.Git的安装 1)安装Git a.查看与 ...

ArcGIS 10.1 for Server安装教程系列—— Linux下的单机安装

http://www.oschina.net/question/565065_81231      因为Linux具有稳定,功能强大等特性,因此常常被用来做为企业内部的服务器,我们的很多用户也是将Ar ...

【Linux开发】Linux下jpeglib库的安装详解

Linux下jpeglib库的安装详解 首先要下载所需的库压缩包:jpegsrc.v6b.tar.gz或 jpegsrc.v8b.tar.gz 然后将下载的压缩包随便放在和解压到你喜欢的地方. # t ...

随机推荐

Java程序,猜大小游戏

一个骰子,通常有1.2.3.4.5.6等6种点数.我们将1.2.3记作“小”,将4.5.6记作“大”.猜中显示“猜对了”,猜错记作“猜错了”之类的字样.本程序可以用Java实现. import jav ...

MySQL 中NULL和空值的区别

平时我们在使用MySQL的时候,对于MySQL中的NULL值和空值区别不能很好的理解.注意到NULL值是未知的,且占用空间,不走索引,DBA建议建表的时候最好设置字段是NOT NULL 来避免这种低效 ...

HDOJ 1875

畅通工程再续 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

asp.net c# 打开新页面或页面跳转

1.最常用的页面跳转(原窗口被替代):Response.Redirect("XXX.aspx"); 2.利用url地址打开本地网页或互联网:Respose.Write(" ...

extern "c" 的作用

作用:实现C和C++混合编程. 原理:C和C++编译器编译之后,函数名会编译成不同的名字,链接阶段名字查找会找不到目标,后面实例中会详解. 用法:①.c文件中定义的函数,.cpp文件要调用时,该.cp ...

Redmine backlogs 安装

之前我们一直用IceScrum的免费版本来运作Scrum项目,用GitLab来做做Issue管理,但是出现了一些问题.GitLab的issue不够好用,不能满足我们的需求,同时issue没有办法放在S ...

MI & CI

目前,很多特征选择文献主要是依据对共信息的直观认识使用它,即:正值表示表型的存在使特征间依赖程度增加,是特征间存在相互作用的证据:负值表示表型的存在使特征间冗余性增加:零表示特征是相互独立的,或者说, ...

Android中的服务

Android中的服务 四大组件都是运行在主线程 Android中的服务,是在后台运行 .可以理解成是在后台运行并且是没有界面的Activity. Foreground process 前台进程 ,用 ...

Vs .Net Framework 灵活配置

背景:我们开发和部署项目时都是通过注释某些配置项 比如: 在调试时就注释掉生产的配置项,在生产时又要改回来,只有一个还好,如果多的话就会非常容易出错. 问题1:在发布时容易出错,需要控制发布时根据配置 ...

ms12_004漏洞进行渗透

环境: 攻击机:kail linux (IP:192.168.31.54) 目标机:winds 7 (IP:192.168.31.136) 1.启动metaspolit 2.输入命令search ms ...

linux下编译libuv,linux下libuv库安装教程相关推荐

  1. linux/ubuntu下简单好用的python opencv安装教程 ( 解决 imshow, SIFT, SURF, CSRT使用问题)

    linux/ubuntu下简单好用的python opencv安装教程 ( 解决 imshow, SIFT, SURF, CSRT使用问题) 参考文章: (1)linux/ubuntu下简单好用的py ...

  2. linux库怎么安装路径设置,Linux libtins 库安装教程

    因为工作原因需要用到libtins网络库, 所以今天去装一下. 很尴尬,由于本人对linux理解比较浅, 所以在中途遇到了一些问题. 虽然只是简单的安装步骤,但是阻挡不了自己菜啊. 一.  下载lib ...

  3. gdbm mysql函数库_linux4AS下的php+apache+mysql+gd库安装修订版

    经过多次安装,将linux4AS下的php+apache+mysql+gd库安装过程多次修订,整理如下: 一. 系统及软件版本问题: 1. 操作系统:Linux AS U2 (advanced ser ...

  4. oracle11g r2 64 补丁,win10系统下oracle11g R2的64位版本安装教程

    win10下oracle11g r2的64位版本安装教程. 下载 win 64位操作系统 下载地址: https://download.oracle.com/otn/nt/oracle11g/1120 ...

  5. python windows curses库安装教程

    python windows curses库安装教程 curses库不支持Windows操作系统,因此如果您用Windows操作系统并且确实需要用curses库,那需要手动安装. 首先,进入这个网站 ...

  6. linux下编译httpd,Linux下编译安装Apache httpd 2.4

    Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一.当前Apache版本为2.4,本文主要描 ...

  7. linux下源代码安装f90,linux下编译fortran linux安装gfortran

    linux上面如何编译fortran源代码? 格式:ifort要编译的文件名-0指定生成的文件名 如我要把123.f文件编译 ifort123.f-o123.e 如果不加指定生成的文件名,系统会自动生 ...

  8. linux stlport 编译,VC++2010下编译STLport,Boost

    VC++2010下编译STLport,Boost 最近在想向Boost转移,努力掌握Boost代码的过程中, STLport版本:5.2.1 Boost版本:1.4.6.1 (1.4.7.0也OK) ...

  9. Linux下编译cscope,Linux cscope命令

    一.简介 Cscope 是一款开源免费的 C/C++浏览工具,自带一个基于文本的用户界面,通过cscope可以很方便地找到某个函数或变量的定义位置.被调用的位置等信息.Cscope对 C /C++支持 ...

最新文章

  1. 2021年大数据ELK(二十七):数据可视化(Visualize)
  2. 搜索功能:洞悉产品的绝佳入口
  3. webpack打包生成的map文件_一站式搞明白webpack中的代码分割
  4. 【LeetCode笔记】114. 二叉树展开为链表(Java、递归)
  5. mysql 1067 win7,大师练习win7系统无法启动MySQL服务错误1067的设置教程
  6. python中sorted()函数的用法_Python中的Sorted()函数
  7. python获取本地时间并向服务器发送udp报文_python3通过udp实现组播数据的发送和接收操作...
  8. VS Code 快捷键设置
  9. c语言答案网站,c语言习题及答案
  10. linux pid t 头文件_Linux中 pid_t 类型的定义.
  11. Windows系统保存电脑当前桌面壁纸图片
  12. python模拟手机app签到_python +adb控制手机自动化签到
  13. 在北京坐公交和大人流量地铁站换乘
  14. JavaWEB做一个美女网站
  15. excel基础操作(1)
  16. vex机器人 亚洲公开赛_VEX机器人亚洲公开赛,乐博乐博学员勇夺双料冠军!
  17. Log4j的日志对象
  18. ACM这条路不好走,但还是有很多人走在这条路上
  19. mocca java_Kaffa的故事 | 从小咖啡馆到世界著名精品咖啡烘焙厂
  20. Jim在2022的8760小时

热门文章

  1. Python:通过远程监控用户输入来获取淘宝账号和密码的实验(二)
  2. linux目录结构简析
  3. 日志审计产品(转载)
  4. MSMQ消息队列安装
  5. C#关于MSMQ通过HTTP远程发送专有队列消息的问题
  6. java中将string类型转int类型或者将string类型转long类型方法(亲测)
  7. elastic-job 和 xxl-job 的对比
  8. chrome应用程序无法启动因为并行配置不正确的处理办法(亲测版本不一样也是类似的操作)
  9. PHP Curl多线程原理实例详解
  10. 操作系统角度谈测试管理和自动化测试