導航:首頁 > 源碼編譯 > 為什麼開源庫還要編譯一下

為什麼開源庫還要編譯一下

發布時間:2023-02-11 22:26:05

⑴ 什麼叫做內核編譯,為什麼要進行內核編譯呢

對開源操作系統(主要是指linux)的內核源代碼在本機進行有針對性的編譯,就叫做內核編譯。
編譯內核的目的主要是改變內核的默認選項,比如內核原來不支持某硬體,原因是內核的相應選項默認狀態是disactivated,需要改變。
當然,也有人把新版的linux裝在舊機子上。這樣,許多在內核里activated的硬體,他沒有,將來也不需要。那麼,就可以在內核里去掉。以及一些服務、特殊的功能等等,如果用不著,比如機子是伺服器的話,最好在內核里關掉,"精兵簡政"。這是以系統安全和提高效率為目的。
有專門的工具對其進行編譯。這個問題不是幾句話能說明白的。看你的提問就知道你是剛剛學習這些內容,建議不要好高騖遠,先把c語言學好,然後再研究這些東西。

歡迎訪問我的論壇:)
http://www.chinesebloger.com
期待您的支持:)

⑵ Android怎麼將開源庫編譯成jar包

1. 開源庫的jar可以直接拿來在Android裡面編譯使用,可能涉及一些依賴的庫。

2. 如果需要編譯Jar包,有兩種選擇:
第一種: 基於java方式的Jar包,工程導入後,通過export方式導出的jar。
第二種: 基於Android方式的Jar包,工程通過Android lib project的方式導入的。具體步驟:
new->project...->Android Project from Existing Code->填入路徑->Finish->右擊工程->Export...->Java->JAR file
理論上如果開源庫不是基於Android開發的話,第二種方式導出Jar,估計需要比較久的解決依賴的過程。

⑶ opencv為什麼需要python編譯

因為官方釋放的版本缺少了很多深度學習相關的模塊。OpenCV是一個基於BSD許可(開源)發行的跨平台計算機視覺庫,可以運行在Linux、Windows、Android和MacOS操作系統。opencv需要python編譯是因為官方釋放的版本缺少了很多深度學習相關的模塊。Python由荷蘭數學和計算機科學研究學會的GuidovanRossum於1990年代初設計,作為一門叫做ABC語言的替代品。

⑷ oracle資料庫開發人員說『需要重新編譯一下』是什麼意思 是說要重新跑某個過程嗎

重新編譯,就是某個過程或者函數哪裡做了修改 需要重新編譯成可以執行的文件,並不是說重新跑某個過程。編譯完成之後,把編譯好了的過程再重新運行。

⑸ linux為什麼要編譯內核

Linux內核版本是不斷更新的,通常,更新的內核會支持更多的硬體,具備更好的進程管理能力,運行速度更快、 更穩定,並且一般會修復老版本中發現的許多漏洞等。而已安裝好的Linux系統如果不是滾動升級的,或者沒有內核更新選擇的話,如果用戶想要使用這些新特性,或想根據自己的硬體平台定製一個更高效,更穩定,更快速的內核,就需要重新編譯內核。

下載源碼編譯內核,如果不做相關優化,直接編譯,結果就跟現在正在使用的系統沒什麼區別。

學習linux驅動,必須要有實踐的平台環境吧,至於需不需要購置平台,要看你的學習目的了。

⑹ 運行java程序時,為什麼要先編譯再運行,編譯運行一起進行不行嗎

java講究的是 一次編譯 處處運行,也就是提高了程序的一致性。java的程序之所在不同的操作系統上的運行結果是一樣的,是因為java虛擬機。

所以要運行java都要裝一個叫jdk的東西,裡面有java的虛擬機。這個虛擬機就是來解釋我們寫的代碼。通過這個虛擬機,就實現了代碼的移植。

我們寫好的程序,通過虛擬機,編譯成class文件,然後在運行。但是我們只需要編譯一次即可。

⑺ 開源代碼,編譯不過,哪位大神知道怎麼回事

即使是開放的源代碼,如果有一部分需要自己拿來作為己用,那也不是說直接拿來就可以百分之百地使用的。也必須要設置好相關的一些環境變數(例如:路徑名、系統鏈接庫等)以及相應的系統參數,然後再對自己的源程序進行編譯。只有這樣才能夠通過編譯,最後再經過和系統庫進行鏈接,最終生成可執行文件。

⑻ 為什麼有的模型要編譯成庫文件

庫文件:
一句話概述:
將函數封裝起來,放在裡面,提供介面,供調用。

庫文件可以說是程序員必須接觸的東西,我們常聽說庫,什麼編碼庫,xx庫啊等等,這些庫,其實它的前身仍然是代碼(跟我們平常寫的.c等等這些文件差不多),只不過,它編譯生成的不再是程序(裡面沒有main),而只是類似於頭文件之類的,只提供介面,給別人調用。

好處:
①把常用的放在庫中,需要的就直接調用(可以添加頭文件來進行聲明,否則,會隱式聲明)
②把不想公開的代碼放在庫中,但是留出頭文件,給出介面,讓其他人使用。

怎麼編譯生成庫:
預備知識:
庫文件包括動態庫,以及靜態庫。

動態庫是指編譯的時候不把這個庫文件所需要的東西編譯進去,而是在執行的時候再到庫中尋找相應的內容;
靜態庫是指吧程序所需的函數從庫中拿出來,然後編譯進程序裡面,後續執行就不再需要庫了。
雙方各有好處,前者,明顯的好處就是程序文件更小,而後者程序文件比較大,但是,運行不需要其他的庫支持。
過程:
主要為4大過程:
①代碼,常規書寫,不用寫main,然後,下一步,編譯:
代碼大致如下:

(1).c文件如下:

#include <stdio.h>

void print_hello()
{
printf("hello everybody\n");
}
1
2
3
4
5
6
1
2
3
4
5
6
.h文件:

#ifndef __HELLO_H__
#define __HELLO_H
void print_hello(); //這個可用,也可不用,不用的話,就變成隱式聲明。
#endif
1
2
3
4
1
2
3
4
②gcc -c hello.c //這一步是為了生成目標文件,但是,其實不需要它也行,不過,它是生成靜態庫與動態庫的中間狀態。
③ ar cr libmyhello.a hello.o //生成libmyhello.a 這么一個靜態庫,注意命名規則libxxx.a
④編譯執行程序:gcc xxx.c -o xxx -L ./libmyhello.a // 調用方法1;
gcc xxx.c -o xxx -lmyhello //調用方法2,此時,需要-l後面自動補了,但是,需要放到設備的lib環境變數中
執行程序:

#include <stdio.h>
#include "hello.h"

int main()
{
print_hello(); //能調用庫裡面的函數,輸出「hello everybody」
return 0;
}
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
動態庫:
①②同上;
③gcc -fPIC -shared -o libmyfirstso.so myfirstso.c //生成了動態庫,注意命名規則;
④編譯執行程序:gcc xxx.c -o xxx -L ./libmyfirstso.so //方法1;
gcc xxx.c -o xxx -lmyfirstso //方法2,同上,需要放到設備的lib環境變數中

當然,也可以將他們混合在一起編譯也行,如果是想指定路徑的話,直接指定即可,如:-L ./lib/libmyfirstso.so

總結:
庫文件非常重要,有以下三點需要注意:
①需要了解的是靜態庫與動態庫的區別;
②需要掌握靜態庫的生成指令(ar cr libhello.a hello.o)、動態庫生成指令(gcc -fPIC -shared -o libhelloso.so hello.o);
③需要掌握如何利用庫編譯執行程序(-L ./libhello.a ; -lhello)(兩種方法)

閱讀全文

與為什麼開源庫還要編譯一下相關的資料

熱點內容
方舟生存進化伺服器如何改名字 瀏覽:892
央行數字貨幣app怎麼注冊 瀏覽:431
51單片機顯示時間 瀏覽:769
我的世界網易版怎麼壓縮地圖 瀏覽:682
qq小程序雲伺服器和 瀏覽:739
方舟伺服器怎麼玩才好玩 瀏覽:557
單片機的部件 瀏覽:621
編譯原理遍的過程 瀏覽:252
python讀取json字元串 瀏覽:62
ubuntu1404安裝php 瀏覽:634
lua能編譯嗎 瀏覽:118
思仙怎麼看伺服器 瀏覽:660
php微信圖片防盜鏈 瀏覽:800
安卓1怎麼讀音 瀏覽:297
農業app怎麼開通快捷支付 瀏覽:912
pythonredisdict 瀏覽:389
如何攻擊別人網賭伺服器 瀏覽:882
隱私與應用加密的圖案密碼 瀏覽:38
陳情令王一博解壓 瀏覽:39
c編譯器使用說明 瀏覽:708