国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

linux并發(fā)服務(wù)器 —— 動態(tài)庫和靜態(tài)庫實戰(zhàn)(一)

這篇具有很好參考價值的文章主要介紹了linux并發(fā)服務(wù)器 —— 動態(tài)庫和靜態(tài)庫實戰(zhàn)(一)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

-E 預(yù)處理指定源文件

-S 編譯指定源文件

-c 匯編指定源文件

-o 生成可執(zhí)行文件

-I directory 指定Include包含文件的搜索目錄

-g 編譯的時候生成調(diào)試信息

-D 在程序編譯時指定一個宏

-w 不生成任何的警告信息

-Wall 生成所有警告

-On n:0~3;表示編譯器的優(yōu)化選項級別 O0 - 不優(yōu)化;O1 - 缺省值;O3 - 優(yōu)化級別最高

-l 編譯時指定庫

-L 編譯時指定庫的路徑

-fpic 生成與位置無關(guān)的代碼

-shared 生成共享目標(biāo)文件

-std 指定方言 -std=c++11

gcc編譯.c;g++編譯.cpp即可

在編譯階段g++會自動調(diào)用gcc 二者等價

靜態(tài)庫的制作

庫的好處:代碼保密;方便部署和分發(fā);

靜態(tài)庫:在程序的鏈接階段被復(fù)制到程序中

命名規(guī)則:linux-libxxx.a;windows-libxxx.lib;lib為前綴,xxx為庫名

制作步驟:

1. gcc獲得.o文件

2. .o文件用ar工具打包? ar rcs libxxx.a xxx.o xxx.o

linux并發(fā)服務(wù)器 —— 動態(tài)庫和靜態(tài)庫實戰(zhàn)(一),筆記

?靜態(tài)庫的使用

gcc main.c -o app -I ./include/ -l calc -L ./lib;-I 提供頭文件目錄,-L 指定庫的路徑,-l 庫的名稱

linux并發(fā)服務(wù)器 —— 動態(tài)庫和靜態(tài)庫實戰(zhàn)(一),筆記

?

動態(tài)庫的制作與使用

動態(tài)庫:在鏈接階段沒有復(fù)制到程序中,而是程序在運(yùn)行時由系統(tǒng)動態(tài)加載到內(nèi)存中供程序調(diào)用

命名規(guī)則:linux - libxxx.so;windows - libxxx.dll;

制作流程:

1. gcc得到.o文件,生成和位置無關(guān)的代碼(-fpic)

2. gcc得到動態(tài)庫(-shared)

linux并發(fā)服務(wù)器 —— 動態(tài)庫和靜態(tài)庫實戰(zhàn)(一),筆記

?動態(tài)庫加載失敗的原因:程序啟動時,動態(tài)庫被動態(tài)加載到內(nèi)存中(使用到動態(tài)庫中的API時才會加載)。需要ldd檢查動態(tài)庫依賴關(guān)系

linux并發(fā)服務(wù)器 —— 動態(tài)庫和靜態(tài)庫實戰(zhàn)(一),筆記

?需要系統(tǒng)的動態(tài)載入器(ld-linux.so)來獲取所依賴庫的絕對路徑,先檢查虛擬地址空間、LD_LIBRARY_PATH、/etc/ld.so.cache、/lib/(/user/lib)將動態(tài)庫加載到內(nèi)存中;

解決辦法:在動態(tài)載入器查找范圍內(nèi),加入動態(tài)庫即可。

eg. 配置環(huán)境變量(LD_LIBRARY_PATH)

linux并發(fā)服務(wù)器 —— 動態(tài)庫和靜態(tài)庫實戰(zhàn)(一),筆記

?但配置的環(huán)境變量是臨時了,新開中斷沒有。永久配置環(huán)境變量的方法:1. 用戶級別;2. 系統(tǒng)級別

用戶級別的配置:在.bashrc中添加上述環(huán)境變量

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/nowcoder/linux/lesson06/library/lib

. .bashrc更新即可;

系統(tǒng)級別的配置:sudo vim/etc/profile

eg. 配置文件列表

通過添加庫絕對路徑在/etc/ld/so/conf;sudo ldconfig更新即可

eg. 將動態(tài)庫文件放置在/lib/(/user/lib)下(不建議,可能會替換系統(tǒng)本身的文件)

靜態(tài)庫的優(yōu)缺點(diǎn)

+ 靜態(tài)庫被打包到應(yīng)用程序中加載速度快

+ 發(fā)布程序無需提供靜態(tài)庫,移植方便

- 消耗系統(tǒng)資源、更新內(nèi)存

- 更新、部署、發(fā)布麻煩

動態(tài)庫的優(yōu)缺點(diǎn)

+ 進(jìn)程間資源共享(共享庫)

+ 更新、部署、發(fā)布簡單

+ 可控制加載動態(tài)庫的時間

- 加載速度慢

- 發(fā)布程序需要提供依賴的動態(tài)庫文章來源地址http://www.zghlxwxcb.cn/news/detail-677668.html

到了這里,關(guān)于linux并發(fā)服務(wù)器 —— 動態(tài)庫和靜態(tài)庫實戰(zhàn)(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • DHCP服務(wù)器+靜態(tài)路由+動態(tài)路由

    DHCP服務(wù)器配置 配置代碼 全局配置

    2024年02月10日
    瀏覽(19)
  • 【Linux】動態(tài)庫和靜態(tài)庫

    【Linux】動態(tài)庫和靜態(tài)庫

    軟鏈接 命令: ln -s 源文件名 目標(biāo)文件名 軟鏈接是獨(dú)立連接文件的,他有自己的inode number,有自己的inode屬性和內(nèi)容。 軟鏈接內(nèi)部存放的是自己所指向文件的路徑。 現(xiàn)實中,我們軟鏈接的應(yīng)用有,例如電腦桌面的快捷模式等。 inode number 不相同 硬鏈接 命令: ln 源文件目標(biāo)文件

    2024年02月11日
    瀏覽(27)
  • 【1000個GDB技巧之】如何在遠(yuǎn)端服務(wù)器打開通過vscode動態(tài)觀測Linux內(nèi)核實戰(zhàn)篇?

    【1000個GDB技巧之】如何在遠(yuǎn)端服務(wù)器打開通過vscode動態(tài)觀測Linux內(nèi)核實戰(zhàn)篇?

    (也可以直接在vscode中配置,忽略) 主要步驟:在~/.ssh/config中添加服務(wù)端的host,以便vscode的remote中能夠登錄 詳細(xì)配置過程參考兄弟篇文章:ssh config如何配置用host名替代root@1.1.1.1 初次使用remote功能,需要在遠(yuǎn)端安裝一個ssh的代理,需要耗費(fèi)一定時間。 添加一個調(diào)試配置文

    2024年04月16日
    瀏覽(20)
  • Linux之靜態(tài)庫和動態(tài)庫

    Linux之靜態(tài)庫和動態(tài)庫

    目錄 一、前言 二、對于庫的理解 三、靜態(tài)庫 四、動態(tài)庫 五、動靜態(tài)庫的加載 在之前,我們講了靜態(tài)庫和動態(tài)庫,詳情請?zhí)D(zhuǎn):靜態(tài)庫和動態(tài)庫 下面我們將從工程師的角度,去了解靜態(tài)庫和動態(tài)庫的形成過程,以及實現(xiàn)它們的制作。并且了解如何將自己的庫交給別人,讓別

    2024年01月20日
    瀏覽(20)
  • 【項目實戰(zhàn)】基于高并發(fā)服務(wù)器的搜索引擎

    【項目實戰(zhàn)】基于高并發(fā)服務(wù)器的搜索引擎

    作者:愛寫代碼的剛子 時間:2024.4.24 前言:基于高并發(fā)服務(wù)器的搜索引擎,引用了第三方庫cpp-httplib,cppjieba,項目的要點(diǎn)在代碼注釋中了 index.html index.hpp log.hpp parser.cc(用于對網(wǎng)頁的html文件切分且存儲索引關(guān)系) searcher.hpp util.hpp http_server.cc(用于啟動服務(wù)器和搜索引擎)

    2024年04月28日
    瀏覽(35)
  • Linux下動態(tài)庫和靜態(tài)庫編譯實踐

    之前寫過JNI的文章,在JNI實踐過程中,也涉及到對動態(tài)庫/靜態(tài)庫的一些編譯實踐,這里統(tǒng)一記錄一下。 注意 :-fPIC編譯選項可使GCC生成位置無關(guān)代碼,簡單來說生成的代碼中的函數(shù)與全局變量均為相對地址,通過GOT (Global offset table)來確定其位置,這種方式引入了一層額外的

    2024年01月17日
    瀏覽(21)
  • linux并發(fā)服務(wù)器 —— 多進(jìn)程并發(fā)(四)

    linux并發(fā)服務(wù)器 —— 多進(jìn)程并發(fā)(四)

    程序是包含一系列信息的文件,描述了如何在運(yùn)行時創(chuàng)建一個進(jìn)程; 進(jìn)程是正在運(yùn)行的程序的實例,可以用一個程序來創(chuàng)建多個進(jìn)程; 用戶內(nèi)存空間包含程序代碼以及代碼所使用的變量,內(nèi)核數(shù)據(jù)結(jié)構(gòu)用于維護(hù)進(jìn)程狀態(tài)信息; 進(jìn)程控制塊(PCB):維護(hù)進(jìn)程相關(guān)的信息,tas

    2024年02月11日
    瀏覽(27)
  • Linux中靜態(tài)庫和動態(tài)庫的使用

    Linux中靜態(tài)庫和動態(tài)庫的使用

    介紹: 庫是一個二進(jìn)制文件,包含的代碼可被程序調(diào)用 標(biāo)準(zhǔn)C庫、數(shù)學(xué)庫、線程庫… 庫有源碼,可下載后編譯;也可以直接安裝二進(jìn)制包 位置一般放在:/lib /usr/lib 庫的知識 庫是事先編譯好的,可以復(fù)用的代碼 在os上運(yùn)行的程序基本上都要使用庫,使用庫可以提高開發(fā)效率

    2024年01月25日
    瀏覽(28)
  • linux下g++鏈接動態(tài)庫和靜態(tài)庫

    頭文件的作用: include的作用就是復(fù)制內(nèi)容到當(dāng)前文件 井號開頭的就是預(yù)處理指令,由預(yù)處理器處理,預(yù)處理階段不關(guān)心代碼,只處理預(yù)處理指令。 頭文件主要 一是為了解決代碼都寫在一個文件太大了,二是把變量,結(jié)構(gòu)體,函數(shù)聲明這些固定的放在一起 函數(shù)只要聲明了,

    2024年02月09日
    瀏覽(21)
  • 如何在linux下制作靜態(tài)庫和動態(tài)庫

    如何在linux下制作靜態(tài)庫和動態(tài)庫

    靜態(tài)庫顧名思義是靜態(tài)的,即程序編譯鏈接時,會把靜態(tài)庫的代碼鏈接到可執(zhí)行文件中。運(yùn)行時不需要靜態(tài)庫(將靜態(tài)庫刪了也能運(yùn)行)。 相當(dāng)于靜態(tài)庫的代碼復(fù)制到了可執(zhí)行文件中。 分別有如下add.c add.h sub.c sub.h四個文件格式。 首先把.c文件都編譯成.o文件。使用下面命令

    2024年01月24日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包