㈠ make會把所有的代碼都重新編譯嗎
make程序實際上是對makefile文件進行解析和執行。
需要編譯的文件,引用的頭文件,庫等都需要在makefile文件中進行標識。
make程序會根據makefile的內容進行編譯。
所以make並不一定編譯所有的代碼。需要查看makefile文件中定義了哪些文件需要進行編譯。
㈡ 如何重新編譯linux內核
因為一般電腦安裝的系統都是Windows,而整個編譯過程都需要在Linux環境下實現,所以最好是在虛擬機里安裝Linux系統來完成這一過程。我使用的虛擬機是VMware-workstation-full-v7.1.4。
然後,我們需要下載一個較高版本的Linux系統的鏡像文件,安裝在虛擬機上,作為編譯環境。我使用的是ubuntu-11.04-desktop-i386。之所以選擇較高版本,是因為它的界面比較方便用戶操作。
然後下載一個Linux內核源代碼文件,將它保存到虛擬機上新安裝的系統中去。並解壓到/usr/src目錄。我使用的是linux-2.6.36,下載低版本的原因是,小巧輕便,易於編譯。
解壓命令如下:
bzip2 -d linux-2.6.36.tar.bz2
tar -xvf linux-2.6.36.ta
修改/usr/src/linux-2.6.36/kernel/sys.c文件,在文件末尾增加一個系統調用函數。自行編寫一個簡單的程序即可,只為測試用。
修改/usr/src/linux-2.6.36/arch/x86/kernel/syscall_table_32.S,為新添加的程序配置系統調用號。
在/usr/src/linux-2.6.36/arch/x86/include/asm/unistd_32.h中配置系統調用表。
下面就是最重要的內核編譯與安裝:
首先配置編譯信息,使其生成適合當前機器的Makefile,輸入make oldconf ig。
接著還要輸入make menuconfig,在字元界面下進行必要的細微的修改。
然後要經過四步編譯過程(直接輸入命令即可):
(1)make bzImage
將內核編譯為壓縮映像,存儲在源碼根目錄下的「System.map」文件中。
(2)make moles
編譯各個模塊。
(3)sudo make moles_install
安裝模塊
(4)sudo make install
安裝內核
第(2)(3)步等待時間較長,可能需要數個小時,請耐心等待。
無報錯的話重啟進入GRUB界面,就可以看到新編譯的內核了。
按回車鍵進入我們編譯的目標內核中,用關鍵詞搜索查看新增加的系統調用「my call」是否已在內核中:
編寫測試程序,調用新添加的系統調用:
測試成功,說明系統調用添加成功,進而說明內核編譯成功!
以上的辦法你可以試一下,希望對你有所幫助。
㈢ 為什麼我每次編譯都是全部重新編譯
這里以 C 語言源程序為例,關於多個 C 語言源程序之間的編譯順序問題,這個是需要在 MAKEFILE 文本文件中寫好多個 C 語言源程序的先後順序,如果多個 C 語言源程序的先後順序寫得不正確,那麼在使用 make 命令對 MAKEFILE 做相關的編譯、鏈接工作時,就會把所有的 C 源程序都重新編譯一遍(按理說:MAKEFILE 的最大好處就是:如果整個軟體系統由多個 C 源程序組成,但是只有其中一個 C 源程序的代碼做了改動,而其他的源代碼沒有做過任何改動,那麼只需要編譯這一個 C 源程序的目標文件,然後再和別的 C 源程序的目標文件相鏈接,生成最終的可執行文件即可,而不需要整個都重新編譯一遍)
你再仔細把你的 MAKEFILE 文件中的各個 C 源程序的先後次序檢查一下,看看是否寫得有錯誤。寫 MAKEFILE 文件也是需要仔細推敲的。
㈣ oracle資料庫開發人員說『需要重新編譯一下』是什麼意思 是說要重新跑某個過程嗎
重新編譯,就是某個過程或者函數哪裡做了修改 需要重新編譯成可以執行的文件,並不是說重新跑某個過程。編譯完成之後,把編譯好了的過程再重新運行。
㈤ 如何將解壓後的exe文件重新編譯
這是一個自解壓文件,用一般的壓縮軟體就可以重新打包了
㈥ make 重新編譯
make clean先
㈦ eclipse 項目中 怎麼重新編譯整個工程
1、點擊選擇號重新編譯的項目,如下圖所示:
㈧ Eclipse怎樣重新編譯
第一種方法:
1、在您要重新編譯的項目上,點擊滑鼠右鍵。
2、選擇【source】下的【clean up】選項。
3、可以點擊【Next】按鈕進入到下一步,也可以直接點擊【Finish】按鈕進行編譯。
4、點擊【Next】按鈕後,顯示出您最近修改過的代碼,並且提示修改前後的區別。點擊【Finish】按鈕,進行重新編譯。
第二種方法(編譯多個項目):
1、選擇菜單欄【Project】->【Clean】選項。
2、
(1)根據需要選擇
【Clean all projects】重新編譯所有項目。
【Clean projects seleted below】重新編譯下方選擇的項目。
(2)點擊【OK】按鈕進行編譯。
㈨ java class怎麼重新編譯
方法如下: 點擊菜單-Project-Build Automatically,這個勾選上。 Build Automatically 的意思是自動編譯,選擇的功能就是,你在修改代碼保存的時候,就編譯了。 點擊菜單-Project-Build All或Build Project。
㈩ 怎麼重新編譯android 下面的動態庫
使用動態庫來編譯動態庫
A項目的android.mk文件如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := testa
LOCAL_SRC_FILES := testa.c
include $(BUILD_SHARED_LIBRARY)
生成的libtesta.so加入到E:\workspace\android-ndk-r8e\platforms\android-8\arch-arm\usr\lib\下面
項目B的文件目錄結構如下:
jni
jni/jni/
jni/prebuilt/
jni目錄下的mk文件如下:
include $(all-subdir-makefiles)
jni/prebuilt目錄下的mk文件如下:
LOCAL_PATH := $(call my-dir)
#include $(CLEAR_VARS)
LOCAL_MODULE := libtesta
LOCAL_SRC_FILES := libtesta.so
include $(PREBUILT_SHARED_LIBRARY)
同時把libtesta.so也放入該目錄下.
jni/jni目錄下的mk文件內容:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_LDLIBS := -ltesta
LOCAL_MODULE := testb
LOCAL_SRC_FILES := testb.c
include $(BUILD_SHARED_LIBRARY)
這樣生成libtestb.so文件, 同時eclipse在打包時會把libtesta.so, libtestb.so都加入到apk文件中,如果沒有prebuilt那一步,那麼在打包時會漏掉libtesta.so, 但編譯會通過,因為編譯讀取的是編譯系統的庫文件目錄(LOCAL_LDLIBS := -ltesta), 這點需要注意
java代碼:
System.loadLibrary("testa");
System.loadLibrary("testb");
注意先後關系