新聞中心
隨著計(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


咨詢
建站咨詢
