1. keil4每次build target 都是全編譯是怎麼回事啊每次花很長時間啊,謝謝!!!
全編譯,顧名思義,就是把工程里所有的文件都編譯一遍,不管這個文件是否有過改動,所以時間很長,因為這個過程是編譯--鏈接---生成HEX文件,所以,如果你文件很多,代碼很多,時間就很長。
而半編譯是只對你改動過的文件進行重新的編譯,所以,過程是
編譯部分文件--重新鏈接--生成HEX.
如果你不是把Keil的優化等級調到了8級及以上,用半編譯完全沒問題。
2. golang如何把全部依賴都編譯進一個文件
個人覺得golang十分適合進行網游伺服器端開發,寫下這篇文章總結一下。從網游的角度看:要成功的運營一款網游,很大程度上依賴於玩家自發形成的社區。只有玩家自發形成一個穩定的生態系統,游戲才能持續下去,避免鬼城的出現。
3. 求助,WPS怎麼都編譯不過
WRF最初的安裝步驟,適合初學者
WRF(Weather Research and Forecasting Model),是由美國國家大氣研究中心(NCAR)和美國國家海洋和大氣管理局(NOAA)共同開發的數值模式。
該模式運行於linux或UNIX之類的環境下;或者在windows系統下安裝虛擬機,虛擬linux環境進行編譯運行。
像大多數linux下的開源軟體,官方發布的WRF是源碼包,需要先編譯才能夠生成可執行文件進而運行模式。
以下是從下載到編譯的最初步驟。
工具/原料
linux(或UNIX、AIX)之類系統的電腦或伺服器一台(需已安裝NETCDF)
方法/步驟
1
如果你自己安裝了linux系統,這一步可以直接跳過;
如果你知道如何通過xmanager或其他ssh工具連接到自己能夠訪問的linux伺服器,這一步可以跳過。
如果你既沒有自己的linux系統,又不會使用ssh工具連接已有的linux(UNIX/AIX)伺服器,這一步是必須看的。
以xmanager為例(軟體請自行搜索下載)
安裝完成後運行Xshell,點擊新建(如圖)
在Host處填入伺服器地址,User Name和Password處分別填入你的賬號和密碼,點擊確定。
選擇剛剛添加好的伺服器,點擊Connect,成功連接伺服器。
2
下載WRF安裝包,和WRF的預處理系統WPS(必需)的安裝包。
首先訪問網址:
如果是第一次登陸,點擊New Users,否則選Returnning Users。
3
若選了New Users,填寫注冊信息:
4
點擊下一步。
5
下載WRF和WPS源碼包(.tar格式)。
6
下載WPS需要的地理數據包,第二列解壓後約49G,如果磁碟空間緊張,選第三列(如圖)。
7
至此,下載完成,以下將下載好的三個壓縮包上傳到伺服器自己可以訪問的目錄下。(自己電腦為linux系統的跳過)
8
回到Xshell,點擊圖示圖標,打開Xftp。
Xftp界面下,左側找到壓縮包,拖動到右側即可。
以下斜體為Xshell(或linux shell)中輸入的命令!!
Xshell中,進入壓縮包所在的目錄,輸入:tar zxvf WRFV3.6.TAR.gz
或者某些系統中需要分兩條命令:gunzip WRFV3.6.TAR.gz 然後 tar xvf WRFV3.6.TAR。
(小技巧,文件名不需要輸全,輸入頭幾個字母,按下Tab鍵,會自動補齊)
生成WRFV3目錄,ls如下:
WPS 和地理數據用同樣的方法解壓(tar zxvf WPSV3.6.TAR.gz)。其中地理數據在運行模式的時候才需要,編譯安裝用不到,因此本文不講。
cd WRFV3,進入WRF目錄,
ls 查看目錄內容
其中,configure clean compile三個文件為可執行文件。
以下開始編譯WRF
./configure
輸入數字後回車,選擇所用的fortran 和c編譯器(WRF代碼由fortran和c語言寫成)。圖中我用的是AIX系統,用的IBM自己的xlf 和xlc編譯器。
其中serial是單線程運算,運算速度慢,但是編譯簡單,一般不用,初次接觸可嘗試。
dmpar是分布內存式並行,相當於多台電腦組成cluster,每個cpu都有自己的內存。
smpar是共享內存式並行,相當於伺服器中內存和cpu不在一起。
自己具體情況咨詢伺服器管理員,如果是自己的PC,選smpar。
接下來輸入數字選擇模式區域是否嵌套一般選1.
至此configure完成。
configure的作用是生成configure.wrf文件,告訴接下來的compile過程:使用哪些編譯器,編譯器在哪兒,以及編譯過程中使用的工具都在哪,編譯使用哪些編譯參數等等等。
一般configure都能完成,接下來就是compile,也就是編譯過程。
輸入命令:
./compile wrf
或者如果你要模擬實際個例,輸入:
./compile em_real
這一過程一般需要花半小時或更久;還有可能發生各種問題,相應問題需要自己google或者上論壇咨詢。一般需要修改 configure.wrf的內容。另外記得編譯不成功的話,需要 ./clean 刪除上一次編譯生成的中間文件。祝你好運。
如果正常完成,會在main目錄下生成 wrf.exe,如果是編譯的em_real,還會生成real.exe。
至此WRF編譯完成。
以下開始編譯WPS。
首先進入WPS目錄:
類似的:
./configure
然後選擇是否需要並行和是否支持GRIB2格式。這個並行於WRF的並行是獨立的,互不影響。GRIB2格式看自己的資料而定。一般不支持GRIB2的話編譯出問題的可能性小一些。
完成後會生成configure.wps。其中WRF_DIR標識了WRF的目錄,需要WRF正確編譯了,並且路徑正確指定才可以。
接下來是編譯WPS
./compile
正常完成的話會在WPS目錄下生成geogrid.exe ungrib.exe 和 metgrid.exe 三個文件(其實是三個鏈接,比如geogrid.exe是實際存在於geogrid/src/geogrid.exe。是否正常完成編譯以源文件是否存在為准)。
另外,util目錄下會生成若干工具(詳見README文件)。如果某些不能正常生成,也不會影響以後的運行WRF。
至此,當你有了:
WPS/目錄下的 geogrid.exe ungrib.exe 和 metgrid.exe
WRFV3/main/目錄下的wrf.exe 和real.exe
你就完成了WRF的基本編譯安裝,可以愉快的進行下一個步驟:進行模擬運算了。
,
4. 為什麼我都編譯不了
你編譯器不存在這個頭文件。你引用 了當然編譯錯誤了 編譯器通過一個頭文件stdafx.h來使用預編譯頭文件。stdafx.h這個頭文件名是可以在project的編譯設置里指定的。編譯器認為,所有在指令include "stdafx.h"前的代碼都是預編譯的,它跳過include "stdafx. h"指令,使用projectname.pch編譯這條指令之後的所有代碼。 因此,所有的MFC實現文件第一條語句都是:include "stdafx.h"。 單獨將StdAfx.cpp重新編譯一次
5. 計算機二級c語言上機三道題都編譯運行出結果,而且結果都正確了為什麼還沒過
全國計算機等級考試二級c的程序題共有三道,分別是填空、改錯、編程,分值方面填空佔18分,改錯18分,編程24分,總分60分。而卷面總分(選擇+程序)60分以上,才會判定成績就合格,才能夠領到證書。
各題詳細答題方式和評分准則如下:
1、填空題:
答題方式:
在指定位置,也就是標記有類似
/********************found*************************/
for(i=0; ____1____ ; i++)
這種位置作答。
答題時,將「____1____」雙引號內的部分完全刪除,然後把作答的答案填補進去,也就是「將類似__1__這種位置標記替換為作答的答案」。
題面會給出「例如輸入***數據,得到***數據」的註解,可以藉此編譯運行程序,通過輸入和輸出的結果來判定程序是否正確。
評分准則:
填空題的評分准則並非以程序本身「能否正確運行」為准則,而是通過類似」對比答題的程序文本與命題組答案,逐行按比例給分「的方式來評分,也就是很多人所謂的「逐項(或逐個答題位置給分)「。
上述描述信息量過大,下面舉例說明:
①題面有明文要求,只允許在指定位置作答,不許添加或刪除空格、回車之類的字元,不許增減程序代碼行數,更不許改動題面的程序原始代碼。
例如:
題面如下:
int i,j,sum=0;
/**************found********************/
for(i=0; __1__ ;i++) //假設答案應為i<10或其他等價寫法
sum+=i;
答題後排版如下:
int i,j,sum=0;
/**************found********************/
for(i=0; i<10 ;i++) sum+=i; //注意這里刪除了一個回車符
卷面要求對應行數(第3行)應為
for(i=0; i<10 ;i++)
評分時判定該行內容為
for(i=0; i<10 ;i++) sum+=i;
文本與命題組答案不符,故該處答案不予給分。
同時,由於更改了行數,後續程序文本均會受影響,從而影響正常得分。
②關於上文中所謂的「命題組答案」
仍以
int i,j,sum=0;
/**************found********************/
for(i=0; __1__ ;i++) //假設答案應為i<10或其他等價寫法
sum+=i;
為例。
正確答案應該是i<10或其他等價寫法,那麼命題組會將各種「正常的」寫法作為命題組答案編撰以供評分。依舊舉例說明,等價寫法包括:
i<=9
i<9+1
i<=10-1
後續有無數種寫法就不一一例舉了
明顯只有i<10和<=9是正常寫法,後續寫法都過於奇葩,故此處在考試時只有寫入i<10或<=9才會得到正常的分數,其他寫法均不給分。
另外,這里無需擔心,命題組很貼心的將各種常見寫法都納入到」命題組答案「中,只要不是過於特立獨行的答案,均會在考試中得到本該有的分數。
總結:
填空題,在程序能夠「運行出正確的答案」,並且沒有違反①和②所強調的事項,均會得到本該有的分數。
①項通常不會違反,被此項影響得分的人數很少
②項不管是考試還是練習,在」能夠運行處正確的答案「前提下依舊丟分的幾乎全都是因為此項。
例如考試時,答案過於特立獨行,將i=i+1;寫成i=i+3-2;
而市面上絕大多數的等考模擬軟體,鑒於各種原因,都沒有使用」命題組答案「給出的姑且稱為」正確答案庫「的答案范圍,而是每個位置只給出一種在該模擬軟體中可以得分的答案寫法,其他」考試時將會正常得分「的答案寫法,造成考試時能夠得分但是在使用這些模擬軟體時均得不到分數的情況,也就是學生們經常詢問的問題:
」老師,i=i+1;和i+=1;不是一樣嗎?為什麼這道題寫i=i+1;才給分,另一道題只有寫i+=1;才給分?「
2、改錯題:
答題方式和評分准則完全等同與填空題,不再重復敘述
3、程序編寫,即俗稱的編程題:
答題方式:
題目中有明確敘述,要求書寫程序的某一部分,以實現題目要求的功能。通常要求書寫的位置是某個指定函數的函數體,或者部分主函數的函數體,代碼量6-10行左右。
評分准則:
編程題,評分依據是」能夠運行出正確的結果「,即評分依據有兩個關鍵點,一是運行,二是結果正確。
此題評分准則依舊是跟」命題組答案「對照,依舊是對比文本後逐行按比例給分,而命題組答案在此題中將會是唯一的。
編程題的評分依據,是程序編譯運行後得到的一個所謂的」out文件「,該文件在考生文件夾下,由編程運行時產生,文件名中通常帶有」out」字樣,各題具體的文件名,查看編程題中調用fopen函數時所書寫的文件名就可以確認。
例如某題面中存在如下語句:
fopen(fp,"out.dat",w);
那麼該題目對應的評分依據就是對應考生文件夾下的名為「out.dat」的文件。
編程題的評分,是將out文件的內容與命題組答案對比,逐行按比例給分。
影響得分的項目如下:
①程序存在error,無法通過編譯:
無法編譯,就無法運行。沒有運行,就不會產生out文件。沒有out文件,那麼將會得到「指定文件未找到」的錯誤,此題判0分。
另外還有一點要注意,有個別模擬軟體曾經出現過,題目中指定文件名為"out.dat",但是題面程序代碼中創建的卻是"ps35.out",造成「指定文件未找到」判0分的情況。這屬於模擬軟體的bug,不會在考試中發生。
②程序通過編譯且能夠運行,但是代碼本身存在bug。
舉個例子,寫程序找出1-15之間的素數。
命題組給出的out文件內容如下:
2
3
5
7
11
13
一共6行,因為編程題總分24分,所以每行佔4分。
如果考生答題過程中程序書寫沒有錯誤的話,一定會得到跟命題組內容與格式完全一樣的答案(文件的書寫由題面的fprintf函數負責,不允許考生改動,故文件格式是已經被指定的),將會得到滿分24分。
如果代碼有誤,程序判定過程中將7判定為非素數,得到的out文件內容與命題組答案對比及評分細則如下:
2 2 匹配,得4分
3 3 匹配,得4分
5 5 匹配,得4分
7 11 不匹配,得0分
11 13 不匹配,得0分
13 不匹配,得0分
故此題得分僅12分。
如果上述數值均正確判斷,但是錯誤的將1判斷為素數,out文件內容如下:
1
2
3
5
7
11
13
結果可想而知,逐行判定,最終肯定判0分。
額外要說明的是,大部分模擬軟體,不會進行逐行按比例給分,而是一旦out文件內容與命題組答案」不完全匹配「,直接判0分,而考試時一定是逐行按比例給分的,這點無需擔心。
③程序書寫正確無bug,但是改動過程序命令禁止改動的其他部分,例如fprintf函數,請參考②
總結:由於②導致該題丟分的幾率是最高的,一定要小心再小心。代碼出現問題時,別心急。很多時候,將已經書寫完畢的代碼整體刪掉,重新書寫,是最省事省力的解決bug的方案。
最後,補充一點,萬一程序原始結構被破壞,別著急,不要冒險關閉vc6,只要按下ctrl+z組合鍵,就能逐步恢復之前的樣式。因為ctrl+z組合鍵的功能是」撤銷「
6. 今天考的國二c語言,操作題都編譯和運行了結果都對,再次打開也是改正過後的程序,但是忘記保存了,這樣
編譯必須保存才能進行。你已經運行出了正確的答案說明已經保存了。所以第二次打開看到的是正確的結果。
放心吧!已經保存了。
7. 在LINUX中可否把應用程序都編譯到內核中,讓系統啟動後完全在內存中運行不讀硬碟!
不行,
內核是內核,只提供最基本的服務。很多服務可以編譯成模塊裝入內核,但是模塊也不是無限多的。你編譯過內核嗎?內核文件不大,解壓出來有200多M吧,如果全部功能編譯的話,一般電腦沒有幾天可能下不來。
把程序編譯到內核,不是不行,不過你的程序要修改。如果你能為linux內核提供代碼的水平,估計離你說的就不遠了。
你的想法有點...... 在你硬碟上讀點東西就那麼吝嗇嗎?
我Linux4G多的文件,分了6G數據空間,還有2G的交換文件,我都沒心疼。
8. linux下多個獨立項目的make,如何寫個批處理讓它們一次性都編譯
沒問題啊,應該是可以的,報什麼錯誤呢?你是不是文件夾路徑寫錯了?
9. dec,c++為什麼每次運行都要編譯
因為編譯就是把一個個語句編寫成可執行文件,所以每次運行都必須編譯。
10. C++ 編譯時會把標准庫里所有的函數都編譯嗎
C++ 標准庫的一部分實現(模板類、模板函數、內聯函數)需要寫在頭文件中,如果包含這些頭文件,就需要編譯這些部分。另一部分的實現是預先編譯在程序庫里。
不過模板和非模板的類/函數在編譯時是有差異的,在編譯模板時是不會立即生成代碼,當中調用一些非模板函數也不會完成所有決議,直至在模板實例化的時候,才會把用到的部分生成代碼。關於這方面可以去了解一下 SFINAE(Substitution Failure Is Not An Error)。
為了減少編譯時間,應該只包含需要的頭文件。C++ 標准庫提供了前置聲明頭文件,如 <iosfwd>(事實上現時只有這個)。這樣可避免在程序的頭文件中包含 iostream、fstream 這些頗大的頭文件。