使用編譯器如VC++6.0,VC++2008
『貳』 如何編譯linux源代碼
首先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內核版本。是不是你剛下的那個呢!有沒有成就感?
『叄』 編譯源碼 後,怎麼改 java源碼重新編譯
Java程序的運行需要經歷三個步驟:
編輯
編譯
運行
其中,編輯是編寫源碼的過程,編譯是將源碼編譯成.class文件。運行時,找的就是.class文件,運行程序時,以main函數為入口,開始執行程序,重點是,下次程序運行時,JVM虛擬機不會再次編譯源碼,而是直接尋找對應的.class文件,從而運行程序。
所以,編譯源碼後,如果有新的修改,需要重新編譯,生成.class文件,然後,才會執行。
修改源碼後若不編譯便直接運行,JVM使用的仍然是上一次運行的.class文件。
『肆』 Linux中源碼編譯安裝程序包括哪些基本步驟
第一步:創建編譯腳本
進入到源碼目錄 執行 ./configure --prefix=/.../.....(--prefix=後面是想要安裝到的目錄)
第二部:編譯
執行 make
第三部:安裝
執行 make install
當然上面這幾部都是最基本的步驟,如果想優化編譯,要在./configure 後面加參數,或者configure之後手動修改Makefile文件 如O2(優化等級) FLAGS 等編譯參數的修改。
--------------------------------------------------------------------------------------------------------------
以上都是源碼包的編譯
如果是自己寫的C代碼 直接 用gcc編譯即可。
例如 編譯test.c
執行 gcc -o test test.c即可將test.c編譯為可執行的文件 test
自己打出來的 要採納啊!
『伍』 myeclipse編寫代碼,怎麼手動編譯
MyEclipse是自動編譯java文件的。
1、在建立類的時候,就進行編譯了
2、當修改類源碼的時候,會點擊保存這個動作,在這個時候,又會重新編譯類為.class文件
3、點擊菜單欄 Project,選擇Build Automatically 這個會也會自動編譯的
『陸』 自己可以編譯安卓源碼嗎
用最新的Ubuntu 16.04,請首先確保自己已經安裝了Git.沒安裝的同學可以通過以下命令進行安裝:
sudo apt-get install git git config –global user.email 「[email protected]」 git config –global user.name 「test」
其中[email protected]為你自己的郵箱.
簡要說明
android源碼編譯的四個流程:1.源碼下載;2.構建編譯環境;3.編譯源碼;4運行.下文也將按照該流程講述.
源碼下載
由於某牆的原因,這里我們採用國內的鏡像源進行下載.
目前,可用的鏡像源一般是科大和清華的,具體使用差不多,這里我選擇清華大學鏡像進行說明.(參考:科大源,清華源)
repo工具下載及安裝
通過執行以下命令實現repo工具的下載和安裝
mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo
補充說明
這里,我來簡單的介紹下repo工具,我們知道AOSP項目由不同的子項目組成,為了方便進行管理,Google採用Git對AOSP項目進行多倉庫管理.在聊repo工具之前,我先帶你來聊聊多倉庫項目:
我們有個非常龐大的項目Pre,該項目由很多個子項目R1,R2,...Rn等組成,為了方便管理和協同開發,我們為每個子項目創立自己的倉庫,整個項目的結構如下:
這里寫圖片描述
執行完該命令後,再使用make命令繼續編譯.某些情況下,當你執行jack-admin kill-server時可能提示你命令不存在,此時去你去out/host/linux-x86/bin/目錄下會發現不存在jack-admin文件.如果我是你,我就會重新repo sync下,然後從頭來過.
錯誤三:使用emulator時,虛擬機停在黑屏界面,點擊無任何響應.此時,可能是kerner內核問題,解決方法如下:
執行如下命令:
通過使用kernel-qemu-armv7內核 解決模擬器等待黑屏問題.而-partition-size 1024 則是解決警告: system partion siez adjusted to match image file (163 MB >66 MB)
如果你一開始編譯的版本是aosp_arm-eng,使用上述命令仍然不能解決等待黑屏問題時,不妨編譯aosp_arm64-eng試試.
結束吧
到現在為止,你已經了解了整個android編譯的流程.除此之外,我也簡單的說明android源碼的多倉庫管理機制.下面,不妨自己動手嘗試一下.
『柒』 如何自己編譯源代碼
我們使用編譯器將自己的源代碼轉換成目標代碼, 使用鏈接器將我們的目標代碼鏈接成一個可執行程序。另外, 我們使用一些程序在計算機中輸入源代碼文本並且編輯它。這些是最初的和最重要的工具, 它們構成程序員的工具集合或「程序開發環境」。 如果你使用的是命令行窗口, 就像很多專業程序員所做的那樣, 你將不得不自己來編寫編譯和鏈接命令。如果你使用IDE(「互動式開發環境」或「集成式開發環境」), 就像很多程序員所做的那樣, 簡單地點擊正確按鈕就可以完成這個工作。附錄C介紹了如何在你的C++實現中編譯和鏈接。 IDE通常包括一個具有有用特性的編輯器, 例如用不同顏色的代碼來區分你的源代碼中的注釋、 關鍵字和其他部分, 以及其他幫助你來調試代碼、 編譯和運行代碼的功能。調試是發現程序中的錯誤和排除錯誤的活動, 你在前進的道路上會聽到很多有關它的內容。 我們使用微軟的Visual C++作?喑炭 ⒒肪呈道 H綣 頤羌虻サ廝怠氨嘁肫鰲被蚴恰癐DE」的某些部分, 那就是所指Visual C++系統。但是, 你可以使用一些提供最新的、 符合標準的C++實現的系統。我們所說的大多數內容(經過微小的修改)對所有的C++實現都將是正確的, 並且其代碼可以在任何地方運行。在工作中, 我們使用幾種不同的實現。
『捌』 怎麼使用Android源碼編譯c模塊生成可執行文件
1. 在./development目錄下創建一目錄 如:myhello
2. 進入hello目錄,在其下編寫自己的.c文件,如: myhello.c
#include <stdio.h>
int main()
{
printf("hello world\n");
exit(0);
//return 0;
}
3. 在hello目錄中,編寫Android.mk, 內容如下:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := myhelloworld
LOCAL_SRC_FILES := myhello.c
LOCAL_MODULE_TAGS := optional
include $(BUILD_EXECUTABLE)
4. 回到Android源代碼頂層目錄,進行編譯,make myhelloworld
5. 生成的可執行文件位於:out/target/proct/lotus/system/bin/ 目錄下
6. adb push 到手機 /data 目錄下,然後進入adb shell,到data目錄下,執行./myhelloworld 皆可
手動編譯連接【arm-eabi-gcc 的目錄隨andorid的版本而有變化,還有就是需要鏈接的文件如果比較多時,需要很多-l 就很麻煩了】
7、編譯成目標文件:
#$(yourAndroid)/prebuilt/linux-x86/toolchain/[arm-eabi-4.2.1]/bin/arm-eabi-gcc -I bionic/libc/arch-arm/include/ -I bionic/libc/include -I bionic/libc/kernel/common -I bionic/libc/kernel/arch-arm -g -c helloworld.c -o hello.o
8、生成可執行代碼:
#$(yourAndroid)/prebuilt/linux-x86/toolchain/[arm-eabi-4.2.1]/bin/arm-eabi-gcc -nostdlib -Bdynamic -Wl,-T,build/core/armelf.x -Wl,-dynamic-linker,/system/bin/linker -Wl,--gc-sections -Wl,-z,noreloc -o helloworld -Lout/target/proct/[generic]/obj/lib -Wl,-rpath-link=out/target/proct/[generic]/obj/lib -lc hello.o -entry=main
其中[ ]中部分根據實際情況修改
**************************************************
實驗:
1. 建目錄(my Android)/development/test, 在該目錄下新建 Android.mk和fb_test.c文件
2. Android.mk文件
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := myfbtest
LOCAL_SRC_FILES := fb_test.c
LOCAL_MODULE_TAGS := optional
include $(BUILD_EXECUTABLE)
3. 以下為fb_test.c
#include <fcntl.h>
#include <linux/fb.h>
#include <sys/mman.h>
#include <linux/kd.h>
#include <stdio.h>
#define FBBIT_PER_PIXEL 32
#define FBBIT_PIXEL_IMAGE 16
#define PIXELS_WIDTH_BYTE 4
#define BYTE_PER_PIXEL 3
#define FB_GRAPHICS_PATH "/dev/graphics/fb0"
#define DEV_TTY0_PATH "/dev/tty0"
#define DISPLAY_ERROR -1
#define DISPLAY_SUCCESS 0
#define GET_BATTERYCAPACITY_ERR -1
#define MAX_STR 255
static struct {
int fd;
void *pixels;
struct fb_fix_screeninfo fixed;
struct fb_var_screeninfo var;
int align_xres;
} fb;
int getBatteryCapacity(void)
{
FILE *in;
char tmpStr[MAX_STR + 1];
char capfile[] = "/sys/class/power_supply/battery/capacity";
if (capfile == NULL)
return GET_BATTERYCAPACITY_ERR;
in = fopen(capfile, "rt");
if (in == NULL)
return GET_BATTERYCAPACITY_ERR;
if (fgets(tmpStr, MAX_STR, in) == NULL) {
printf("Failed to read battery capacity!\n");
fclose(in);
return GET_BATTERYCAPACITY_ERR;
}
printf("Battery capacity(ascii): %s\n", tmpStr);
fclose(in);
return 0;//atoi(tmpStr);
}
static int vt_set_graphicsmode(int graphics)
{
int fd, r;
fd = open(DEV_TTY0_PATH, O_RDWR | O_SYNC);
if (fd < 0)
return DISPLAY_ERROR;
r = ioctl(fd, KDSETMODE, graphics);
close(fd);
return r;
}
int display_init(void)
{
fb.fd = open(FB_GRAPHICS_PATH, O_RDWR);
if (fb.fd < 0)
return DISPLAY_ERROR;
if (ioctl(fb.fd, FBIOGET_FSCREENINFO, &fb.fixed) < 0)
return DISPLAY_ERROR;
if (ioctl(fb.fd, FBIOGET_VSCREENINFO, &fb.var) < 0)
return DISPLAY_ERROR;
fb.align_xres = fb.fixed.line_length /
(fb.var.bits_per_pixel >> BYTE_PER_PIXEL);
fb.pixels = mmap(0, fb.fixed.line_length * fb.var.yres_virtual,
PROT_READ | PROT_WRITE, MAP_SHARED, fb.fd, 0);
if (fb.pixels == MAP_FAILED)
return DISPLAY_ERROR;
vt_set_graphicsmode(KD_GRAPHICS);
memset(fb.pixels, 0, fb.fixed.line_length * fb.var.yres_virtual);
//display_update(fb.pixels, fb.align_xres, fb.var.yres);
fb.var.activate = FB_ACTIVATE_FORCE;
ioctl(fb.fd, FBIOPUT_VSCREENINFO, &fb.var);
printf("display_init ok\n");
return DISPLAY_SUCCESS;
}
void display_on(void)
{
ioctl(fb.fd, FBIOBLANK, FB_BLANK_UNBLANK);
}
void display_off(void)
{
ioctl(fb.fd, FBIOBLANK, FB_BLANK_POWERDOWN);
}
int main()
{
display_init();
display_off();//關顯示屏
getBatteryCapacity();
sleep(5);
display_on();//開顯示屏
return 0;
}
『玖』 如何用visual studio2010編譯已經寫好的C#的源代碼
你要把關聯和屬性都設置好,然後使用生成->解決方案(ctrl+shift+B),也可以在命令提示欄裏手動編譯。使用F5是先進性編譯,然後開始調試。
『拾』 【路由器】OpenWrt 手動編譯 ipk
.ipk 文件是可以通過 OpenWrt 的包管理軟體 opkg 直接安裝,好比 .deb 文件與 apt 的關系。雖然官方的軟體倉庫已經很豐富了,但是有時仍然需要從源碼編譯一些第三方的軟體使用,例如銳捷認證等
但是由於路由器平台通常與常用的伺服器或者個人 PC 的處理器架構不同,並且路由器的處理器本身性能較弱,幾乎不可能直接在路由器上進行編譯生成 .ipk 文件,因此需要交叉編譯來實現
而官方的 OpenWrt 倉庫就提供了一個方便使用的交叉編譯環境
以 Debian / Ubuntu 為例,參考 官網給出的要求 ,可以通過下面命令來進行安裝依賴包
安裝/更新好這些依賴之後,就可以通過 git 拉取 OpenWrt 倉庫了
通常由於倉庫較大以及網速問題,可能會需要很久,其實可以通過 --depth 來限制拉取的倉庫深度,或者通過鏡像站來加速拉取,當然也可以兩者同時採用
進入 openwrt 倉庫後,首先需要更新軟體包列表 feeds ,它是在 OpenWrt 中共用位置的包的集合。運行以下命令即可更新內置軟體包列表並鏈接到編譯工具中:
通常使用圖形化菜單界面來進行配置編譯選項,依次配置處理器架構、具體的處理器型號以及設備
以小米 mini 路由器為例,應該將他們配置成如下圖所示
這一步就是獲取對應設備交叉編譯所需的編譯鏈
可以先搜索有沒有已經配置好的含有 Makefile 的倉庫,有了適配過的 Makefile 文件就可以很方便的來編譯源碼生成 .ipk 文件了
以 minieap 為例, github 上有已經完成的倉庫,依次可以直接拉取來編譯
在拉取完成倉庫後,就可以再次配置編譯選項,將需要編譯成 .ipk 的功能配置成模塊編譯,也就是標記成 M
對於 minieap 來說,在 Network 找到對應選項並配置成 M 即可,如下圖
配置完成後就可以進行編譯了,編譯命令也很簡單,以 minieap 為例如下所示
編譯完成後, .ipk 文件會生成在 ./bin/packages/<YourArchitecture>/base 目錄下,將其拷貝到路由器上就可以通過 opkg 進行安裝使用了