日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux下编译libuv,linux下libuv库安装教程

發布時間:2024/9/19 linux 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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库安装教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。