日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Linux系統(tǒng)通過轉(zhuǎn)換為靜態(tài)可執(zhí)行文件提高性能(linuxso轉(zhuǎn)靜態(tài))

隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展和進(jìn)步,計(jì)算機(jī)的性能要求也越來越高。在Linux操作系統(tǒng)的應(yīng)用中,提高性能的方法有很多種,而本文將介紹一種通過將Linux系統(tǒng)轉(zhuǎn)換為靜態(tài)可執(zhí)行文件的方式來提高性能的方法。

在鳩江等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需網(wǎng)站建設(shè),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),成都全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè)公司,鳩江網(wǎng)站建設(shè)費(fèi)用合理。

軟件開發(fā)的過程中,往往需要調(diào)用一些庫函數(shù)來實(shí)現(xiàn)一些功能。這些庫函數(shù)通常都是動(dòng)態(tài)鏈接庫,也就是so文件。在一次程序運(yùn)行中,同一個(gè)so文件只會被加載一次,并且會被加載多次的代碼段也只會被加載一份,這就保證了內(nèi)存中有多個(gè)進(jìn)程時(shí),系統(tǒng)可以共享庫實(shí)例,從而節(jié)省內(nèi)存空間。但是,動(dòng)態(tài)鏈接庫也有其不足之處,就是每次調(diào)用這些庫函數(shù)時(shí),系統(tǒng)都需要到磁盤上查找這些動(dòng)態(tài)鏈接庫文件,并加載這些文件,這就導(dǎo)致了一定的性能損失。

而與動(dòng)態(tài)鏈接庫相對應(yīng)的概念則是靜態(tài)鏈接庫,也就是a文件。當(dāng)使用了靜態(tài)鏈接庫時(shí),系統(tǒng)在鏈接時(shí)會將所需要的庫文件中用到的函數(shù)或變量全部復(fù)制到可執(zhí)行文件中,這就使得在運(yùn)行時(shí)不需要到磁盤上去尋找動(dòng)態(tài)鏈接庫文件,從而可以提高程序的運(yùn)行效率。

Linux系統(tǒng)也可以類比于應(yīng)用程序,將其從動(dòng)態(tài)鏈接庫方式轉(zhuǎn)換為靜態(tài)鏈接庫。換句話說,就是將Linux系統(tǒng)轉(zhuǎn)換為一個(gè)靜態(tài)可執(zhí)行文件。對于這個(gè)過程,有很多種實(shí)現(xiàn)方式,其中更流行的方式就是使用initramfs技術(shù)。

initramfs技術(shù)是一種內(nèi)存文件系統(tǒng),它包含了啟動(dòng)Linux系統(tǒng)所必需的一些文件,將這些文件全部導(dǎo)入到內(nèi)存中,然后使用這些文件來引導(dǎo)系統(tǒng)。如果我們將Linux系統(tǒng)全部導(dǎo)入到內(nèi)存中,那么就相當(dāng)于將其轉(zhuǎn)換為一個(gè)靜態(tài)可執(zhí)行文件。這樣每次系統(tǒng)運(yùn)行時(shí)就不需要到磁盤上去讀取文件了,從而可以提高系統(tǒng)的性能。

將Linux系統(tǒng)轉(zhuǎn)換為靜態(tài)可執(zhí)行文件,需要先將系統(tǒng)中所有的動(dòng)態(tài)鏈接庫全部編譯為靜態(tài)鏈接庫,然后再使用initramfs技術(shù)將系統(tǒng)轉(zhuǎn)換為靜態(tài)可執(zhí)行文件。這個(gè)過程需要一定的技術(shù)和認(rèn)識,需要對Linux系統(tǒng)的編譯、鏈接和啟動(dòng)過程有一定的了解。

當(dāng)Linux系統(tǒng)被轉(zhuǎn)換為靜態(tài)可執(zhí)行文件之后,可以發(fā)現(xiàn)系統(tǒng)的啟動(dòng)速度明顯提高了。這是因?yàn)樵陟o態(tài)鏈接庫的情況下系統(tǒng)中的所有代碼都位于可執(zhí)行文件中,不需要到磁盤上去尋找動(dòng)態(tài)鏈接庫文件,從而可以加快系統(tǒng)的啟動(dòng)速度。此外,由于靜態(tài)鏈接庫的引入,還能提高程序在運(yùn)行時(shí)的執(zhí)行效率,從而提高整個(gè)系統(tǒng)的性能。

雖然將Linux系統(tǒng)轉(zhuǎn)換為靜態(tài)可執(zhí)行文件可以提高系統(tǒng)的性能,但是它也存在一些缺點(diǎn)。首先是系統(tǒng)容易出現(xiàn)更新問題,因?yàn)楦孪到y(tǒng)不僅需要考慮內(nèi)核新版本的更換,還需要更新靜態(tài)可執(zhí)行文件本身。由于靜態(tài)可執(zhí)行文件會將整個(gè)系統(tǒng)全部載入內(nèi)存,導(dǎo)致系統(tǒng)的資源占用更多,如果系統(tǒng)中的應(yīng)用程序占用空間比較大,就會出現(xiàn)內(nèi)存不足的問題。

將Linux系統(tǒng)轉(zhuǎn)換為靜態(tài)可執(zhí)行文件可以提高系統(tǒng)的性能,但是也需要我們在使用的時(shí)候,根據(jù)實(shí)際情況進(jìn)行取舍。如果系統(tǒng)運(yùn)行速度比較慢,并且沒有大量的應(yīng)用程序需要運(yùn)行,那么將系統(tǒng)轉(zhuǎn)換為靜態(tài)可執(zhí)行文件是一種不錯(cuò)的選擇。反之,則需要根據(jù)實(shí)際情況來選擇其他的優(yōu)化方法。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!

請問我有一個(gè).so文件,如何在Linux下編程使用呢?

Linux下的.so是基于linux下的動(dòng)態(tài)鏈接,其功能和作用類似與windows下.dll文件。

下面是關(guān)于.so的介紹:

一、引言

通常情況下,對函數(shù)庫的鏈接是放在編譯時(shí)期(compile time)完成的。所有相關(guān)的對象文件(object file)與牽涉到的函數(shù)庫(library)被鏈接合成一個(gè)可執(zhí)行文件(executable file)。程序在運(yùn)行時(shí),與函數(shù)庫再無瓜葛,因?yàn)樗行枰暮瘮?shù)已拷貝到自己門下。所以這些函數(shù)庫被成為靜態(tài)庫(static libaray),通常文件名為“l(fā)ibxxx.a”的形式。

其實(shí),我們也可以把對一些庫函數(shù)的鏈接載入推遲到程序運(yùn)行的時(shí)期(runtime)。這就是如雷貫耳的動(dòng)態(tài)鏈接庫(dynamic link library)技術(shù)。

二、動(dòng)態(tài)鏈接庫的特點(diǎn)與優(yōu)勢

首先讓我們來看一下,把庫函數(shù)推遲到程序運(yùn)行時(shí)期載入的好處:

1. 可以實(shí)現(xiàn)進(jìn)程之間的資源共享。

什么概念呢?就是說,某個(gè)程序的在運(yùn)行中要調(diào)用某個(gè)動(dòng)態(tài)鏈接庫函數(shù)的時(shí)候,操作系統(tǒng)首先會查看所有正在運(yùn)行的程序,看在內(nèi)存里是否已有此庫函數(shù)的拷貝了。如果有,則讓其共享那一個(gè)拷貝;只有沒有才鏈接載入。這樣的模式雖然會帶來一些“動(dòng)態(tài)鏈接”額外的開銷,卻大大的節(jié)省了系統(tǒng)的內(nèi)存資源。C的標(biāo)準(zhǔn)庫就是動(dòng)態(tài)鏈接庫,也就是說系統(tǒng)中所有運(yùn)行的程序共享著同一個(gè)C標(biāo)準(zhǔn)庫的代碼段。

2. 將一些程序升級變得簡單。用戶只需要升級動(dòng)態(tài)鏈接庫,而無需重新編譯鏈接其他原有的代碼就可以完成整個(gè)程序的升級。Windows 就是一個(gè)很好的例子。

3. 甚至可以真正坐到鏈接載入完全由程序員在程序代碼中控制。

程序員在編寫程序的時(shí)候,可以明確的指明什么時(shí)候或者什么情況下,鏈接載入哪個(gè)動(dòng)態(tài)鏈接庫函數(shù)。你可以有一個(gè)相當(dāng)大的軟件,但每次運(yùn)行的時(shí)候,由于不同的操作需求,只有一小部分程序被載入內(nèi)存。所有的函數(shù)本著“有需求才調(diào)入”的原則,于是大大節(jié)省了系統(tǒng)資源。比如現(xiàn)在的軟件通常都能打開若干種不同類型的文件,這些讀寫操作通常都用動(dòng)態(tài)鏈接庫來實(shí)現(xiàn)。在一次運(yùn)行當(dāng)中,一般只有一種類型的文件將會被打開。所以直到程序知道文件的類型以后再載入相應(yīng)的讀寫函數(shù),而不是一開始就將所有的讀寫函數(shù)都載入,然后才發(fā)覺在整個(gè)程序中根本沒有用到它們。

三、動(dòng)態(tài)鏈接庫的創(chuàng)建

由于動(dòng)態(tài)鏈接庫函數(shù)的共享特性,它們不會被拷貝到可執(zhí)行文件中。在編譯的時(shí)候,編譯器只會做一些函數(shù)名之類的檢查。在程序運(yùn)行的時(shí)候,被調(diào)用的動(dòng)態(tài)鏈接庫函數(shù)被安置在內(nèi)存的某個(gè)地方,所有調(diào)用它的程序?qū)⒅赶蜻@個(gè)代碼段。因此,這些代碼必須實(shí)用相對地址,而不是絕對地址。在編譯的時(shí)候,我們需要告訴編譯器,這些對象文件是用來做動(dòng)態(tài)鏈接庫的,所以要用地址不無關(guān)代碼(Position Independent Code (PIC))。

對gcc編譯器,只需添加上 -fPIC 標(biāo)簽,如:

gcc -fPIC -c file1.c

gcc -fPIC -c file2.c

gcc -shared libxxx.so file1.o file2.o

注意到最后一行,-shared 標(biāo)簽告訴編譯器這是要建立動(dòng)態(tài)鏈接庫。這與靜態(tài)鏈接庫的建立很不一樣,后者用的是 ar 命令。也注意到,動(dòng)態(tài)鏈接庫的名字形式為 “l(fā)ibxxx.so” 后綴名為 “.so”

四、動(dòng)態(tài)鏈接庫的使用

使用動(dòng)態(tài)鏈接庫,首先需要在編譯期間讓編譯器檢查一些語法與定義。

這與靜態(tài)庫的實(shí)用基本一樣,用的是 -Lpath 和 -lxxx 標(biāo)簽。如:

gcc file1.o file2.o -Lpath -lxxx -o program.exe

編譯器會先在path文件夾下搜索libxxx.so文件,如果沒有找到,繼續(xù)搜索libxxx.a(靜態(tài)庫)。

在程序運(yùn)行期間,也需要告訴系統(tǒng)去哪里找你的動(dòng)態(tài)鏈接庫文件。在UNIX下是通過定義名為 LD_LIBRARY_PATH 的環(huán)境變量來實(shí)現(xiàn)的。只需將path賦值給此變量即可。csh 命令為:

setenv LD_LIBRARY_PATH   your/full/path/to/dll

一切安排妥當(dāng)后,你可以用 ldd 命令檢查是否連接正常。

ldd program.exe

動(dòng)態(tài)鏈接庫*.so的編譯與使用- –

動(dòng)態(tài)庫*.so在linux下用c和c++編程時(shí)經(jīng)常會碰到,最近在網(wǎng)站找了幾篇文章介紹動(dòng)態(tài)庫的編譯和鏈接,總算搞懂了這個(gè)之前一直不太了解得東東,這里做個(gè)筆記,也為其它正為動(dòng)態(tài)庫鏈接庫而苦惱的兄弟們提供一點(diǎn)幫助。

1、動(dòng)態(tài)庫的編譯

下面通過一個(gè)例子來介紹如何生成一個(gè)動(dòng)態(tài)庫。這里有一個(gè)頭文件:so_test.h,三個(gè).c文件:test_a.c、test_b.c、test_c.c,我們將這幾個(gè)文件編譯成一個(gè)動(dòng)態(tài)庫:libtest.so。

so_test.h:

#include   “stdio.h”

void test_a();

void test_b();

void test_c();

test_a.c:

#include “so_test.h”

void test_a()

{

printf(“this is in test_a…/n”);

}

test_b.c:

#include “so_test.h”

void test_b()

{

printf(“this is in test_b…/n”);

}

test_a.c:

#include “so_test.h”

void test_c()

{

printf(“this is in test_c…/n”);

}

將這幾個(gè)文件編譯成一個(gè)動(dòng)態(tài)庫:libtest.so

$ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so

2、動(dòng)態(tài)庫的鏈接

在1、中,我們已經(jīng)成功生成了一個(gè)自己的動(dòng)態(tài)鏈接庫libtest.so,下面我們通過一個(gè)程序來調(diào)用這個(gè)庫里的函數(shù)。程序的源文件為:test.c。

test.c:

#include “so_test.h”

int main()

{

test_a();

test_b();

test_c();

return 0;

}

l 將test.c與動(dòng)態(tài)庫libtest.so鏈接生成執(zhí)行文件test:

$ gcc test.c -L. -ltest -o test

l 測試是否動(dòng)態(tài)連接,如果列出libtest.so,那么應(yīng)該是連接正常了

$ ldd test

l 執(zhí)行test,可以看到它是如何調(diào)用動(dòng)態(tài)庫中的函數(shù)的。

3、編譯參數(shù)解析

最主要的是GCC命令行的一個(gè)選項(xiàng):

-shared 該選項(xiàng)指定生成動(dòng)態(tài)連接庫(讓連接器生成T類型的導(dǎo)出符號表,有時(shí)候也生成弱連接W類型的導(dǎo)出符號),不用該標(biāo)志外部程序無法連接。相當(dāng)于一個(gè)可執(zhí)行文件

l -fPIC:表示編譯為位置獨(dú)立的代碼,不用此選項(xiàng)的話編譯后的代碼是位置相關(guān)的所以動(dòng)態(tài)載入時(shí)是通過代碼拷貝的方式來滿足不同進(jìn)程的需要,而不能達(dá)到真正代碼段共享的目的。

l -L.:表示要連接的庫在當(dāng)前目錄中

l -ltest:編譯器查找動(dòng)態(tài)連接庫時(shí)有隱含的命名規(guī)則,即在給出的名字前面加上lib,后面加上.so來確定庫的名稱

l LD_LIBRARY_PATH:這個(gè)環(huán)境變量指示動(dòng)態(tài)連接器可以裝載動(dòng)態(tài)庫的路徑。

l 當(dāng)然如果有root權(quán)限的話,可以修改/etc/ld.so.conf文件,然后調(diào)用 /in/ldconfig來達(dá)到同樣的目的,不過如果沒有root權(quán)限,那么只能采用輸出LD_LIBRARY_PATH的方法了。

4、注意

調(diào)用動(dòng)態(tài)庫的時(shí)候有幾個(gè)問題會經(jīng)常碰到,有時(shí),明明已經(jīng)將庫的頭文件所在目錄 通過 “-I” include進(jìn)來了,庫所在文件通過 “-L”參數(shù)引導(dǎo),并指定了“-l”的庫名,但通過ldd命令察看時(shí),就是死活找不到你指定鏈接的so文件,這時(shí)你要作的就是通過修改 LD_LIBRARY_PATH或者/etc/ld.so.conf文件來指定動(dòng)態(tài)庫的目錄。通常這樣做就可以解決庫無法鏈接的問題了。

-lxx

xx是你的.so文件名

其實(shí)使用方法和你使用數(shù)學(xué)庫函數(shù)是一樣的,

源代碼

中添加

#include ,編譯的時(shí)候,加上-lm參數(shù)。

注:linux下的.so文件為共享庫,相當(dāng)于windows下的dll文件。

擴(kuò)展資料: 

linux下編寫調(diào)用so文件實(shí)例

.so是Linux(Unix)下的

動(dòng)態(tài)鏈接庫

. 和.dll類似. 

比如:

文件有: a.c, b.c, c.c 

gcc -c a.c 

gcc -c b.c 

gcc -c c.c 

gcc -shared libXXX.so a.o b.o c.o 

要使用的話也很簡單. 比如編譯d.c, 使用到libXXX.so中的函數(shù), libXXX.so地址是MYPATH 

gcc d.c -o d -LMYPATH -lXXX 

注意不是-llibXXX

test.c文件和一個(gè)test.h,這兩個(gè)文件要生成libsotest.so文件。然后我還有一個(gè)testso.c文件,在這個(gè)文件里面調(diào)用libsotest.so中的函數(shù)。

編寫的過程中,首先是編譯so文件,我沒有編寫makefile文件,而是參考的2里面說的直接寫的gcc命令。

因?yàn)閟o文件里面沒有

main函數(shù)

,所以是不可執(zhí)行的,所以編譯的時(shí)候要加上-c,只生成目標(biāo)文件。

linux下的.so文件為共享庫,相當(dāng)于windows下的dll文件,使用方法如下:

在你的工程源代碼里包含.h頭文件,然后可以調(diào)用動(dòng)態(tài)庫里的函數(shù),在鏈接的時(shí)候加上如下編譯器參數(shù):

-l xx.so

如果你的so文件是以lib開頭的,還可以直接這樣使用:

-lxx

xx是你的.so文件名

其實(shí)使用方法和你使用數(shù)學(xué)庫函數(shù)是一樣的,源代碼中添加

#include ,編譯的時(shí)候,加上-lm參數(shù)。

動(dòng)態(tài)鏈接庫,調(diào)用,寫c語言時(shí)用的。放在編譯的文件夾里面。包含進(jìn)去.h就行了、、、、、、、、

安裝個(gè)開發(fā)工具 然后編譯就行了 redhat在安裝的時(shí)候選擇自定義就可以安裝開發(fā)工具 make 然后make install

linux動(dòng)態(tài)庫和靜態(tài)庫的區(qū)別

動(dòng)態(tài)庫時(shí) 程序運(yùn)行時(shí) 加載的 并不包含在程序本身內(nèi).

而靜態(tài)庫則是編譯進(jìn)程序里的, 運(yùn)行時(shí)不需要外部的庫, 但這樣會使程序本身變的臃腫..

動(dòng)態(tài)知納庫一般是 xxxxx.so.x.xx 前面名稱, 后面版本, 動(dòng)態(tài)庫搭旦沒也成為共享庫.

靜態(tài)庫遲舉則是 xxxx.a 以 .a結(jié)尾

靜態(tài)庫:這類庫旁備穗的名字一般是libxxx.a,xxx為庫的名字。利用靜態(tài)函數(shù)庫編譯成的文件比較大,因?yàn)檎麄€(gè)函數(shù)庫的所有數(shù)據(jù)都會被整合進(jìn)目標(biāo)代碼中,他的優(yōu)點(diǎn)就顯而易見了,即編譯后的執(zhí)行程序不需要外部的函數(shù)庫支持,因?yàn)樗惺褂玫暮瘮?shù)都已經(jīng)被編譯進(jìn)去了。當(dāng)然這也會成為他的缺點(diǎn),因?yàn)槿绻o態(tài)函數(shù)庫改變了,那么你的程序必須重新編譯。

動(dòng)態(tài)庫:這類庫的名字一般是libxxx.M.N.so,同樣的xxx為庫的名字,M是庫的主版本號,N是庫的副版本號。當(dāng)然也可以不要版本號,但名字必須有。相對于靜態(tài)函數(shù)庫,動(dòng)態(tài)函數(shù)庫在編譯的時(shí)候并沒有被編譯進(jìn)目標(biāo)代碼中,你的程序執(zhí)行到相關(guān)函數(shù)時(shí)才調(diào)用該函數(shù)庫里的相應(yīng)函數(shù),因此動(dòng)態(tài)函數(shù)庫所產(chǎn)生的可執(zhí)行文件比較小。由于函數(shù)庫沒有被整合進(jìn)你的程序,而是程序運(yùn)行時(shí)動(dòng)態(tài)的申請并調(diào)用,所以程序的運(yùn)行環(huán)境中滾轎必須提供相應(yīng)的庫。動(dòng)態(tài)函數(shù)庫的改變并不影響你的程序,所以動(dòng)態(tài)函數(shù)庫的升級比較方便。linux系統(tǒng)有幾個(gè)重要的目錄存放相應(yīng)的函數(shù)庫,如/lib /usr/lib。

當(dāng)要使用靜態(tài)的程序庫時(shí),連接器會找出程序所需的函數(shù),然后將它們拷貝到執(zhí)行文件,由于這種拷貝是完整的,所以一旦連接成功,靜態(tài)程序庫也就不再需要了。然而,對動(dòng)態(tài)庫而言,就不是這樣。動(dòng)態(tài)庫會在執(zhí)行程序內(nèi)留下一個(gè)標(biāo)記指明當(dāng)程序執(zhí)行時(shí),首先必須載入這個(gè)庫。由于動(dòng)態(tài)庫節(jié)省空間,linux下進(jìn)行連接的缺省操作是首先連接動(dòng)態(tài)庫,也就是運(yùn)卜說,如果同時(shí)存在靜態(tài)和動(dòng)態(tài)庫,不特別指定的話,將與動(dòng)態(tài)庫相連接。

靜態(tài)庫是什么?可沖定位目標(biāo)文件以一種特定的方式打包成一個(gè)單獨(dú)的文件,并臘敬且在鏈接生成可執(zhí)行文件時(shí),從這個(gè)單獨(dú)的文件中拷貝自己需要的內(nèi)容到最終的可執(zhí)行文件中,這個(gè)單獨(dú)的文件,被稱為靜態(tài)庫,Linux中通常以.a(archive)為后綴。

動(dòng)態(tài)庫是什么?動(dòng)態(tài)庫可靜態(tài)庫類似,但是它并不在鏈接時(shí)將需要的二進(jìn)制代碼都拷貝到可執(zhí)行文件中,而是僅僅拷貝一些重定位和符號表信息,這些信息可以在程序運(yùn)行時(shí)完成真正的鏈接過程,Linux中通常以.so(shared

object)作為后綴。

有什么區(qū)別呢?

1、可執(zhí)行文件大小不一樣:靜態(tài)鏈接的可執(zhí)行文件比動(dòng)態(tài)鏈接的可執(zhí)行文件要大得多,因?yàn)樗鼘⑿枰玫降拇a從二進(jìn)制文件中拷貝了一份,而動(dòng)態(tài)庫僅僅是復(fù)制了一些重定位世哪和符號表信息。

2、占用磁盤大小不一樣:如果有多個(gè)可執(zhí)行文件,那靜態(tài)庫中的同一個(gè)函數(shù)的代碼就會被復(fù)制多份,而動(dòng)態(tài)庫只有一份,因此使用靜態(tài)庫占用的磁盤空間相比動(dòng)態(tài)庫要大。

3、擴(kuò)展性與兼容性不一搜局碼樣:如果靜態(tài)庫中某個(gè)函數(shù)的實(shí)現(xiàn)變了,那么可執(zhí)行文件必須重新編譯,而對于動(dòng)態(tài)鏈接生成的可執(zhí)行文件,只需要更新動(dòng)態(tài)庫本身即可,不需要重新編譯可執(zhí)行文件。

Linux中沒有動(dòng)態(tài)庫,只有稱作共享庫的類似概念的庫。

共享胡稿伏庫是被編譯成二進(jìn)制機(jī)器碼的可執(zhí)行文件。

靜態(tài)庫是編譯成目標(biāo)代碼敬激的不可執(zhí)行文件,使用靜態(tài)庫需要褲攜客戶程序通過源代碼編譯再與靜態(tài)庫一起連接的過程才能變成可執(zhí)行文件

關(guān)于linux so 轉(zhuǎn)靜態(tài)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

香港云服務(wù)器機(jī)房,創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)云服務(wù)器廠商,回大陸優(yōu)化帶寬,安全/穩(wěn)定/低延遲.創(chuàng)新互聯(lián)助力企業(yè)出海業(yè)務(wù),提供一站式解決方案。香港服務(wù)器-免備案低延遲-雙向CN2+BGP極速互訪!


本文名稱:Linux系統(tǒng)通過轉(zhuǎn)換為靜態(tài)可執(zhí)行文件提高性能(linuxso轉(zhuǎn)靜態(tài))
轉(zhuǎn)載來源:http://www.5511xx.com/article/cdscppp.html