導航:首頁 > 源碼編譯 > 二次編譯

二次編譯

發布時間:2022-01-27 01:53:37

『壹』 .NET Frame work編譯機制(二次編譯)

C++和.Net程序採用了兩種不同的編譯方式。通常一個C++編寫的程序,都是一次編譯成二進制的代碼,在相應的操作系統平台上直接執行即可。而.Net程序採用兩次編譯的方式,用C#,VB.Net等語言寫成的程序被編譯成IL代碼,通過CLR在運行的時候JIT編譯成為本地二進制代碼。
MFC和WinForm很多設計上的不同從根本上說,都是因為編譯模式帶來的不同。因此,在仔細探討MFC和WinForm之前,有必要細細體會一下不同編譯方式帶來的改變。
考慮一段代碼,它需要在不同的編譯環境下生成不同的代碼,或者是為了減少代碼編寫量用一些替換方式取代類似的代碼。在C++中利用預編譯和宏來解決這些事情。MFC框架中,更是大量使用宏來進行核心功能的設計。但是宏只是一種巧妙的減少輸入代碼量的方式,本質上和手寫輸入一些代碼並無區別(也許不夠嚴密吧),它並不能在程序運行的時候動態支持代碼的插入和改變,因為此時它已經編譯完成了。而二次編譯則不同,你可以將它的第一次編譯看成是通常一次編譯程序的預編譯期,只是這個預編譯更為的強大,它可以編譯生成信息更為豐富的元數據。並且,只要在JIT執行前動態插入代碼,利用反射等手段,就可以將已經編譯好的程序的行為在某種程度上進行改變,其動態性能得到了本質上的改變。
因此,在MFC和WinForm中,我們可以看到兩者在動態性能,安全性和效率方面都有很大的不同,總結一下,都可以歸結到這不同的編譯模式上來。在以後的日誌中,都可以看到這些區別的

『貳』 關於程序二次編譯,請教

並不是二次編譯,而是把黑軟的二進制代碼作為資源放到黑軟的可執行文件中。只需要在配置以後,把二進制代碼釋放出來,存成可執行文件,再把配置寫進去也就好了。

『叄』 .NET源代碼執行前要經過兩次編譯,分別是哪兩次

第一次編譯使用.net Framework代碼時,把代碼編譯為MSIL(即微軟中間語言)這些代碼不專用於任何操作系統,它是獨立於機器,CPU和操作系統的.
第二次不同種類的編繹器,生成本地機器代碼

『肆』 C#的兩次編譯具體是怎麼實現的

第一次編譯使用.net Framework代碼時,把代碼編譯為MSIL(即微軟中間語言)這些代碼不專用於任何操作系統,它是獨立於機器,CPU和操作系統的.
第二次不同種類的編繹器,生成本地機器代碼

『伍』 什麼叫做二次編程

當要在以前的程序上擴展功能或者修改功能等的時候,在源代碼拿來重新修改,編譯,調試,運行。

『陸』 C#求能夠二次編譯的反編譯工具

Reflector,已經是完整版,因為是反射,所以不可能將IL展現為原有的C#,任何反編譯工具其實用的都是反射,所以效果是一樣的

『柒』 判斷對錯:asp.net採用「二次編譯」的原理

感覺是這樣的..每次第一次運行都很慢,然後就順暢無阻了。

『捌』 openwrt第二次編譯需要多長時間

OpenWrt編譯環境搭建和編譯方法

一、 更新開發系統。
安裝完ubuntu 後,重新開機的時候,會有一個VMware tools 安裝的提示界面,耐心等待,等到VMware tools 安裝好後
因為更新系統和安裝一些工具包需要用到網路,所以進入ubuntu的界面後,
將ubuntu的網路設置為NAT網路連接模式(默認為NAT),
以上就緒後,更新開發系統的軟體
1、首先備份Ubuntu 10.04源列表
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup (備份下當前的源列表) 2、修改更新源
sudo gedit /etc/apt/sources.list (打開Ubuntu 11.10源列表文件) 3、使用
http://hi..com/pobenliu/blog/item/2180dc3502933c375bb5f5a5.html
網站下的一個更新源貼到sources.list文件中(「#」開頭的那一行為注釋,可以直接復制進文件中) ,使用這里的源主要是為了提高下載速度,用官方的會比較慢。
4、通知ubuntu啟用新的更新源
sudo apt-get update

二、 安裝編譯OpenWrt需要用到的軟體包:
命令如下:
sudo apt-get install g++ libncurses5-dev zlib1g-dev bison flex unzip
autoconf gawk unzip make gettext gcc binutils patch asciidoc bzip2 libz-dev libc6-dev linux-headers-2.6.32-38
注意,紅色部分的版本根據自己的內核版本來修改,可以通過uname –a 來查看。
三、 安裝svn。
由於在後面需要用到svn 來下載OpenWrt,所以需要先安裝svn。
由於使用命令 sudo apt-get install subversion來安裝的版本最新也只是
1.6.6版本,為了和windows 上的版本同步,所以需要下載安裝包,進行手工安裝。
1、先下載兩個包,
subversion-1.7.2.tar.gz
subversion-deps-1.6.1.tar.gz 2、拷貝到/home目錄下,解壓
tar -zxvf subversion-1.7.2.tar.gz
tar -zxvf subversion-deps-1.6.1.tar.gz 3、進入目錄,准備編譯安裝: cd subversion-1.7.2 執行:./configure
安裝遇到的第一個error: checking for APR... no
configure: WARNING: APR not found
The Apache Portable Runtime (APR) library cannot be found. Please install APR on this system and supply the appropriate --with-apr option to 'configure' 解決辦法: 到tar -zxvf subversion-deps-1.6.1.tar.gz 解壓的目錄下,有一個apr的文件夾,放到subversion-1.7.2下即可 cp -rf ../subversion-1.6.1/apr .
4、再重新執行./configure 命令 遇到第二個error:
checking APR version... 1.3.3
configure: Apache Portable Runtime Utility (APRUTIL) library configuration
checking for APR-util... no
configure: WARNING: APRUTIL not found
The Apache Portable Runtime Utility (APRUTIL) library cannot be found. Either install APRUTIL on this system and supply the appropriate 提示的是apache的埠沒有找到,因為此安裝並沒有與apache結合,到tar -zxvf subversion-deps-1.6.1.tar.gz 解壓的目錄下,發現有一個 APR-util,再移動到ubversion-1.7.2下
5、重新執行./configure 命令 Ok,遇到第三個error,
checking sqlite library version (via pkg-config)... no
An appropriate version of sqlite could not be found. We recommmend 3.7.6.3, but require at least 3.6.18. 錯誤有提示:解決辦法
sqlite-amalgamation-3071000.zip下載這個包,解壓,將sqlite3.c放到指定的位置: unzip sqlite-amalgamation-3070900.zip
mkdir –p subversion-1.7.2/sqlite-amalgamation cd sqlite-amalgamation-3070900
cp sqlite3.c ../subversion-1.7.2/sqlite-amalgamation/
之後重新執行./configure 見到這表示./config執行ok
checking for ctypesgen.py... none configure: creating ./config.status config.status: creating Makefile
config.status: creating tools/backup/hot-backup.py
config.status: creating tools/hook-scripts/commit-access-control.pl config.status: creating
subversion/bindings/swig/perl/native/Makefile.PL
config.status: creating subversion/svn_private_config.h.tmp config.status: executing libtool commands
config.status: executing svn_private_config.h.tmp commands
6、然後編譯安裝: make clean
make && make install
只要沒有遇到error,就是ok的, 輸入
svn –version
得到:
svn, version 1.7.2 (r1207936) compiled Feb 8 2012, 23:09:00 說明安裝成功。
四、下載OpenWrt源碼
分兩種,一種是最新版但不是最穩定,也就是trunk版,一種是相對穩定版,backfire版。源碼下載命令分別是: 先創建文件夾:
mkdir OpenWrt_trunk cd OpenWrt_trunk Trunk版下載命令:
svn co svn://svn.openwrt.org/openwrt/trunk/
若需要backfire:
mkdir OpenWrt_backfirecd OpenWrt_backfire
Backfire下載命令:
svn co svn://svn.openwrt.org/openwrt/branches/backfire/
五、 編譯OpenWrt:
如果不是剛下載的代碼,為了保持代碼為最新狀態,應該定期運行Svn up更新代碼,什麼時候有變你是不知道的 然後是更新軟體包:
./scripts/feeds update –a ./scripts/feeds install –a
如果不更新軟體包的話,你會發現後面是看不到很多軟體包的,也就無法集成那些看不到的包了。
然後是make defconfig,再make menuconfig進入定製界面,定製自己的系統。
最後,執行make命令,然後是非常漫長的等待。
在編譯的時候,是根據你的配置,進行下載程序包的,先是把這些程序包下載到./dl目錄下,再進行解壓編譯,和安裝。如果不是為了開發某一軟體的話,建議一開始的時候不要安裝太多的軟體,一是時間太長,然後很容易出錯。要用到的軟體在編譯好後,用opkg來安裝。

『玖』 java中.java文件只能編譯一次嗎未對.java源文件做任何修改情況下,不能再用javac命令進行二次編譯

當然可以咯,這個編譯次數沒影響的,希望可以幫到你

『拾』 求助 關於scratch源碼二次編譯的問題

因為是用的別人項目源碼,然後有他自己的makefile ,ide是eclipse for c++,指定用現成的makefile 能編過,如果自動生成makefile 會報很多錯誤,cmake 也需要自己寫makelist.txt呀,現在需要在項目里添加文件,編譯就會報不識別的錯誤。

閱讀全文

與二次編譯相關的資料

熱點內容
sublime3運行python 瀏覽:184
怎麼把安卓視頻傳到蘋果上面 瀏覽:79
手機拍鬼片用什麼app 瀏覽:640
爬山虎app是干什麼用的 瀏覽:505
有哪些寫給程序員的歌 瀏覽:49
成都市命令 瀏覽:993
建立系列文件夾 瀏覽:983
蘋果開機白屏帶文件夾問號 瀏覽:733
體驗服為什麼伺服器會關閉 瀏覽:41
酒店命令 瀏覽:750
中走絲線切割編程視頻 瀏覽:80
衣服壓縮袋手泵原理 瀏覽:714
通達信編程書籍 瀏覽:981
車用壓縮天然氣瓶閥 瀏覽:971
鞋的程序員 瀏覽:259
車的壓縮比是什麼意思 瀏覽:202
網站源碼怎麼傳到文件夾 瀏覽:914
海南壓縮機在哪裡 瀏覽:491
電腦文件夾清晰的文件結構 瀏覽:839
如何把蘋果手機的app轉到安卓 瀏覽:305