linux下编译libuv,linux下libuv库安装教程
下載并編譯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库安装教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux裁剪图片的软件,ImageMa
- 下一篇: linux怎样反向查找路径,Linux中