首先uname -r看一下你當前的linux內核版本
1、linux的源碼是在/usr/src這個目錄下,此目錄有你電腦上各個版本的linux內核源代碼,用uname -r命令可以查看你當前使用的是哪套內核,你把你下載的內核源碼也保存到這個目錄之下。
2、配置內核 make menuconfig,根據你的需要來進行選擇,設置完保存之後會在當前目錄下生成.config配置文件,以後的編譯會根據這個來有選擇的編譯。
3、編譯,依次執行make、make bzImage、make moles、make moles
4、安裝,make install
5、.創建系統啟動映像,到 /boot 目錄下,執行 mkinitramfs -o initrd.img-2.6.36 2.6.36
6、修改啟動項,因為你在啟動的時候會出現多個內核供你選擇,此事要選擇你剛編譯的那個版本,如果你的電腦沒有等待時間,就會進入默認的,默認的那個取決於 /boot/grub/grub.cfg 文件的設置,找到if [ "${linux_gfx_mode}" != "text" ]這行,他的第一個就是你默認啟動的那個內核,如果你剛編譯的內核是在下面,就把代表這個內核的幾行代碼移到第一位如:
menuentry 'Ubuntu, with Linux 3.2.0-35-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 9961c170-2566-41ac-8155-18f231c1bea5
linux/boot/vmlinuz-3.2.0-35-generic root=UUID=9961c170-2566-41ac-8155-18f231c1bea5 ro quiet splash $vt_handoff
initrd/boot/initrd.img-3.2.0-35-generic
}
當然你也可以修改 set default="0"來決定用哪個,看看你的內核在第幾位,default就填幾,不過我用過這種方法,貌似不好用。
重啟過後你編譯的內核源碼就成功地運行了,如果出現問題,比如滑鼠不能用,usb不識別等問題就好好查查你的make menuconfig這一步,改好後就萬事ok了。
最後再用uname -r看看你的linux內核版本。是不是你剛下的那個呢!有沒有成就感?
② 如何將源代碼編譯成jar包
先打開命令提示符(win2000或在運行框里執行cmd命令,win98為DOS提示符),輸入jar Chelp,然後回車(如果你盤上已經有了jdk1.1或以上版本),看到什麼:
用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目錄] 文件名 ...
選項:
-c 創建新的存檔
-t 列出存檔內容的列表
-x 展開存檔中的命名的(或所有的〕文件
-u 更新已存在的存檔
-v 生成詳細輸出到標准輸出上
-f 指定存檔文件名
-m 包含來自標明文件的標明信息
-0 只存儲方式;未用zip壓縮格式
-M 不產生所有項的清單(manifest〕文件
-i 為指定的jar文件產生索引信息
-C 改變到指定的目錄,並且包含下列文件:
如果一個文件名是一個目錄,它將被遞歸處理。
清單(manifest〕文件名和存檔文件名都需要被指定,按'm' 和 'f'標志指定的相同順序。
首先在資源文件當前目錄寫一個清單文件example.mf
mf文件應是以下格式:
第一行為:
Main-Class: Hello
然後最少兩個空行。
其中的Hello.class是你寫的程序中main函數所在的那個類名。
有兩點必須記得:
1,在第一行中"Main-class:"之後一定要有一個空格。後有最少兩個空行
2,類名不能寫成Hello.class的格式,要省了後輟。
我試過了,你錯的原因是"Main-class:"之後沒有一個空格。
在CLASS目錄下運行:jar cfm example.jar example.mf A.class B.class
示例1:將兩個class文件存檔到一個名為 'classes.jar' 的存檔文件中:
jar cvf classes.jar Foo.class Bar.class
示例2:用一個存在的清單(manifest)文件 'mymanifest' 將 foo/ 目錄下的所有文件存檔到一個名為 'classes.jar' 的存檔文件中:
jar cvfm classes.jar mymanifest -C foo/ .
來個小例子試試看:
我們只有一個HelloWorld,如下:
public class HelloWorld{
public static void main(String[ ] args){
System.out.println("Hi, Hello World!");
}
}
將這個java文件存到C盤跟目錄下,ok,接下來,
在先前打開的命令提示符下(跳轉到C盤提示符下),我們輸入javac HelloWorld.java,然後繼續輸入:jar cvf hello.jar HelloWorld.class,回車後去你的C盤看看,多了什麼,沒錯 hello.jar 。
基本的步驟我們現在都知道了,你可以自己去嘗試一下隨著jar後面的參數的不同,結果有什麼變化。
緊接著我們看看如何運行我們的jar包。
在進入正題之前,你要先打開我們剛剛做好的jar包看看,多了什麼呢,META-INF目錄?再看看裡面是什麼,還有一個MANIFEST.MF文件是不是?用文本編輯器(我這里是UltraEdit)打開它看看:
Manifest-Version: 1.0
Created-By: 1.4.2 (Sun Microsystems Inc.)
就是這樣。這里我們對它進行修改,加一句:Main-Class: HelloWorld (在第三行)。這個就是我們之前寫的那個類,也就是我們的入口類。也即,
Manifest-Version: 1.0
Created-By: 1.4.2 (Sun Microsystems Inc.)
Main-Class: HelloWorld
接下來,我們在命令提示符里執行:
jar umf MANIFEST.MF app.jar (應該是hello.jar吧)
這樣我們使用了我們自己的MANIFEST.MF文件對原來默認的進行了更新。你不妨可以再進去看看是不是添上了Main-
Class: HelloWorld這一句。 (是嗎,我怎麼沒試出來,提示
java.io.FileNotFoundException:MANIFEST.MF(系統找不到指定的文件)怎麼回事?
)
Ok,這個最後的一步了,來驗證我們做的一切,在命令提示符中輸入:
java -jar hello.jar(執行)
出現了什麼, Hi, Hello World!
我們再來看看jar文件在tomcat中發布,注意:在tomcat中我們就不能再用jar這種格式,而改war格式,它是專門用於web應用的,其實整個過程下來基本上和jar是類似的:
先准備我們要打包的資源。
找到存放tomcat的webapps目錄,進到其中,新建一個文件夾,這里命名為hello,再進去新建WEB-INF文件夾,再進去新
建 classes文件夾,此時我們也將我們唯一的servlet,HelloWorld.java放到這里,在與classes目錄同級下建立一文
件 web.xml。Ok,目前我們初步建立了一個簡單的web應用。
這是HelloWorld.java:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("");
out.println("");
out.println("");
out.println("Hello, World!");
out.println("");
}
}//end here!
對它編譯。下面是web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.
//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
</web-app>
在命令提示符下進到先前創制的hello目錄下,執行 jar cvf hello.war * ,我們便得到hello.war。將它拷貝至webapps目錄下,ok,來看最後一步,打開tomcat的目錄conf中的server.xml,加入:
<Context path="/hello" docBase="hello.war" debug="0" reloadable="true"/>
大功告成!運行它,啟動tomcat,後在瀏覽器中輸入http://localhost:8080/hello/HelloWorld,有了嗎?
最後,如果你想用ant來完成以上的打包活動,下面就告訴你:
對於jar來說。在build.xml中,
<target name="jar">
<jar destfile="${app_home}/hello.jar">
<fileset dir="${dest}" includes="**"/>
<!--fileset dir="${dest}" includes="**/action.properties"/-->
</jar>
</target>
對於war,
<war warfile="hello.war" webxml="./WEB-INF/web.xml">
<fileset dir="html"/>
<lib dir="lib/">
<exclude name="oracle*.jar"/>
</lib>
<classes dir="build/servlets">
<include name="**/*.class"/>
</classes>
</war>
好了,就這么多,希望對你有點幫助。:)
補充:
jar基本操作:
1. 創建jar文件
jar cf jar-file input-file(s)
c---want to Create a JAR file.
f---want the output to go to a file rather than to stdout.
eg: 1)jar cf myjar.jar query_maintain_insert.htm
2)jar cvf myjar.jar query_maintain_insert.htm
v---Proces verbose(詳細的) output.
3)jar cvf myjar.jar query_maintain_insert.htm mydirectory
4)jar cv0f myjar.jar query_maintain_insert.htm mydirectory
0---don't want the JAR file to be compressed.
5)jar cmf MANIFEST.MF myjar.jar yahh.txt
m---Used to include manifest information from an existing manifest file.
6)jar cMf MANIFEST.MF myjar.jar yahh.txt
M---the default manifest file should not be proced.
7)jar cvf myjar.jar *
*---create all contents in current directory.
2. 察看jar文件
jar tf jar-file
t---want to view the Table of contents of the JAR file.
eg: 1)jar vft yahh.jar
v---Proces verbose(詳細的) output.
3. 提取jar文件
jar xf jar-file [archived-file(s)]
x---want to extract files from the JAR archive.
eg: 1)jar xf yahh.jar yahh.txt(僅提取文件yahh.txt)
2)jar xf yahh.jar alex/yahhalex.txt(僅提取目錄alex下的文件yahhalex.txt)
3)jar xf yahh.jar(提取該jar包中的所有文件或目錄)
4. 修改Manifest文件
jar cmf manifest-addition jar-file input-file(s)
m---Used to include manifest information from an existing manifest file.
5. 更新jar文件
jar uf jar-file input-file(s)
u---want to update an existing JAR file
③ 怎麼把源代碼編譯成可執行程序
可以引出為」可執行jar「(項目必須有mian方法),然後雙擊運行即可。 第一步:在項目上右擊,選擇」Export「,之後找到」Runnable Jar file「。 第二步:在」Launch「下拉選中選擇」main「方法入口類,然後選擇」Browse「後,輸入」jar「名稱,點擊」Finsh「即...
④ 能否實現一個程序自己編譯自身的源代碼
目前已經有類似的程序,比如比較新C++編譯器就是用C++寫的.你說的這個基本就是疑犯追蹤里的機器寶寶了吧
求採納
⑤ 如何自己編譯源代碼
我們使用編譯器將自己的源代碼轉換成目標代碼, 使用鏈接器將我們的目標代碼鏈接成一個可執行程序。另外, 我們使用一些程序在計算機中輸入源代碼文本並且編輯它。這些是最初的和最重要的工具, 它們構成程序員的工具集合或「程序開發環境」。 如果你使用的是命令行窗口, 就像很多專業程序員所做的那樣, 你將不得不自己來編寫編譯和鏈接命令。如果你使用IDE(「互動式開發環境」或「集成式開發環境」), 就像很多程序員所做的那樣, 簡單地點擊正確按鈕就可以完成這個工作。附錄C介紹了如何在你的C++實現中編譯和鏈接。 IDE通常包括一個具有有用特性的編輯器, 例如用不同顏色的代碼來區分你的源代碼中的注釋、 關鍵字和其他部分, 以及其他幫助你來調試代碼、 編譯和運行代碼的功能。調試是發現程序中的錯誤和排除錯誤的活動, 你在前進的道路上會聽到很多有關它的內容。 我們使用微軟的Visual C++作?喑炭 ⒒肪呈道 H綣 頤羌虻サ廝怠氨嘁肫鰲被蚴恰癐DE」的某些部分, 那就是所指Visual C++系統。但是, 你可以使用一些提供最新的、 符合標準的C++實現的系統。我們所說的大多數內容(經過微小的修改)對所有的C++實現都將是正確的, 並且其代碼可以在任何地方運行。在工作中, 我們使用幾種不同的實現。
⑥ 如何編譯C語言源代碼
下載一個VC2005軟體,把代碼復制到裡面,設置好C運行環境,點擊編譯,OK,然後點擊那個感嘆號,直接鏈接運行,就OK了。
⑦ 編譯源碼 後,怎麼改 java源碼重新編譯
Java程序的運行需要經歷三個步驟:
編輯
編譯
運行
其中,編輯是編寫源碼的過程,編譯是將源碼編譯成.class文件。運行時,找的就是.class文件,運行程序時,以main函數為入口,開始執行程序,重點是,下次程序運行時,JVM虛擬機不會再次編譯源碼,而是直接尋找對應的.class文件,從而運行程序。
所以,編譯源碼後,如果有新的修改,需要重新編譯,生成.class文件,然後,才會執行。
修改源碼後若不編譯便直接運行,JVM使用的仍然是上一次運行的.class文件。
⑧ 源碼怎麼編譯
使用編譯器如VC++6.0,VC++2008
⑨ 怎麼從源代碼編譯成exe程序
1. 打開c語言編輯工具(vc6.0),寫入所編程序源代碼。
2. 點擊 組建-編譯-執行。
3. 執行完程序,點擊回車。
4. 點擊 文件另存為 把文件存到你能夠找到的文件夾中,比如桌面。
5. 打開你剛保存文件的文件夾,內含有一個 Bebug 的文件夾。注意:如果沒有,請再次執行第二步。
6. 打開 Bebug 的文件夾,有一個以.exe為後綴名的文件,就是所需要的可執行文件,將其拷貝出,就可以單獨執行,也就是一個小軟體生成了。
⑩ 如何編譯PHP源代碼
PHP是解釋型語言吧(不需要編譯)想要通過編譯提高效率為何不用C ,C++等編譯型語言