導航:首頁 > 源碼編譯 > 特殊程序編譯教學

特殊程序編譯教學

發布時間:2023-01-29 13:02:01

A. 程序是如何編寫的

設計環境 程序也就是指令的集合,它告訴計算機如何執行特殊的任務。

B. 如何用C語言編譯一個程序:用星號輸出你輸入的英文和符號,可以是字元串(類同漢字型檔點陣)但不是漢字。

用星號自己編一個字型檔,然後用switch把輸入的字元一一映射上去輸出就好了

C. ubuntu如何編譯fortran77程序

ubuntu編譯fortran代碼的方法:

1.將編譯器intel fortran安裝好。

2.寫一個fortran測試程序,例如:「hello.f90」,代碼如下。

program main
write(*,*) "hello"
stop
end
3.使用以下命令進行編譯。

ifort -c hello hello.f90
註:編譯後生成可執行文件hello 如果直接用ifort hello.f90,則默認生成文件是a.out

4.執行可執行文件,在當前目錄下輸入以下命令查看結果。

D. 如何用JDK編譯java程序

JAVA版hello world全攻略侯光敏 看到很多技術網站的BBS上面充斥著java初學者的關於運行第一個java程序的求助信息,我覺得作為過來人很有寫這篇文章的必要,因為他們遇到的都是些很低級的問題,但是讓這些問題占據bbs上那麼多寶貴的空間就太不應該了。 要搞清楚的基本概念 java是一種跨平台的網路語言,為了能夠在不同平台上運行,它使用了虛擬機這個概念。後綴名為java的文件是源代碼文件,它經過編譯後生成的是class文件。虛擬機執行的就是這些class文件,將它們轉化成為不同平台能夠運行的命令。這就是為什麼java的效率比較低的原因。也是因為這個原因,在java里沒有其它語言的使用者熟悉的exe文件的概念。 執行hello world的方法 切記:在命令行中輸入 javac 源文件名.java (編譯) java 源文件名 (執行,沒有後綴) 這里說的是java application,裡麵包括main函數。 如果hello world是applet版的,在命令行中輸入appletviewer 源文件名 (已經編譯後的class文件) 如果class文件已經嵌入了html網頁中,直接用IE打開就行了。 application經常出現的錯誤 系統提示Exception in thread "main " java.lang.NoClassDefFoundError。出現這個提示的原因可能有: 1 你把文件名拼錯了,java對大小寫是敏感的。打錯了當然找不到文件。 2 虛擬機沒有找到必須的類庫。你可能沒有在autoexec.bat文件中設置classpath。進入windows的運行,輸入sysedit,然後在autoexec.bat文件中加入這么一行:set classpath=你的jdk的安裝目錄/lib; 例如set classpath=c:/jdk1.3.0_02/lib; 保存退出後,你要在dos窗口的c根目錄下執行一遍autoexec.bat文件已保證被設置了,當然,如果你願意也可以重啟機器。 系統提示HelloWorld.java:1: Public class helloworld must be defined in a file called "HelloWorld.java ". public class helloworld{^ 一個Java源程序中可以定義多個類,但是,具有public 屬性的類只能有一個,而且要與文件名相一致。還有,main方法一定要放在這個public 的類之中,這樣才能運行這個類。 系統提示Exception in thread "main " java.lang.NoSuchMethodError: main 出現這個異常是因為你在抄書上的代碼時抄錯了。主函數一定要這么寫:public static void main(String args[]) 一個字都不能錯,切記!!! applet常出現的錯誤 IE顯示applet已經啟動,但是還是只顯示灰色的一塊。這種問題在使用jBuilder等集成開發工具是最容易出現,用appletviewer就沒有問題。這是因為你在applet中使用了IE不支持的java版本。jBuilder在做applet是默認使用了swing組件,但是IE只支持jdk1.1,所以造成了這種情況。只要把導入swing的語句去掉就行了,然後按照提示修改一下代碼,不要用swing組件的方法。如果你覺得swing組件很漂亮,打死都要用,那麼就裝一個java的plug-in這個東西在你裝jdk的高版本時就自動裝上了。看看你的控制面版中有沒有那個紅鼻子的小東西。但是切記,如果你要用它,那麼你的html的文件的寫法就和從前不一樣了,不能簡單的用CODE來指明類了。至於怎麼寫,不在這篇文章的討論范圍內了(你寫一個hello world還要用plug-in就搞大了)。網上有很多文章講怎麼寫。 用慣了點擊就執行的的exe文件自然就很不習慣打開dos窗口輸入命令行,你可以把它做成jar文件,但是對hello world來說有點麻煩,有個簡單的傻辦法:自己做一個批處理文件。例如:用記事本寫一個run.txt文件,內容是:java 你的主文件名 ,然後把後綴改成bat存到和主文件相同的目錄下。呵呵,雙擊就運行了,夠傻吧。 如果你非要用exe文件運行,jet等工具可以把class文件做成exe文件。但是這樣也失去了java的跨平台性。 以上就是hello world的全攻略了,如果你還看不到hello world,我倒!你還是別學java了。

E. 如何編譯java程序

三種方法:

1.在IDE中,如eclipse中寫的Java程序,在點擊保存後eclipse就會調用javac編譯程序編譯,編譯文件在當前項目的bin目錄下。

2.作為一個獨立的文件且沒有定義Java環境變數,需要在cmd窗口中切換到java bin目錄下執行Javac程序,執行格式為javac 空格 Java源文件;如 javac C://hello.java;

3.作為一個獨立的文件且定義了Java環境變數,打開cmd窗口,可以在任意目錄輸入javac java源文件,如javac D://hi.java。

(5)特殊程序編譯教學擴展閱讀

Java也是一種高級語言,要讓計算機執行你撰寫的Java程序,也得通過編譯程序的編譯。但是Java編譯程序並不直接將Java源代碼編譯為相依於計算機平台的0、1序列,而是將其編譯為位元組碼。

Java源代碼的擴展名為.java,經過編譯程序編譯之後生成擴展名為.class的位元組碼。

F. 編譯原理

C語言編譯過程詳解
C語言的編譯鏈接過程是要把我們編寫的一個C程序(源代碼)轉換成可以在硬體上運行的程序(可執行代碼),需要進行編譯和鏈接。編譯就是把文本形式源代碼翻譯為機器語言形式的目標文件的過程。鏈接是把目標文件、操作系統的啟動代碼和用到的庫文件進行組織形成最終生成可執行代碼的過程。過程圖解如下:

從圖上可以看到,整個代碼的編譯過程分為編譯和鏈接兩個過程,編譯對應圖中的大括弧括起的部分,其餘則為鏈接過程。
一、編譯過程
編譯過程又可以分成兩個階段:編譯和匯編。
1、編譯
編譯是讀取源程序(字元流),對之進行詞法和語法的分析,將高級語言指令轉換為功能等效的匯編代碼,源文件的編譯過程包含兩個主要階段:
第一個階段是預處理階段,在正式的編譯階段之前進行。預處理階段將根據已放置在文件中的預處理指令來修改源文件的內容。如#include指令就是一個預處理指令,它把頭文件的內容添加到.cpp文件中。這個在編譯之前修改源文件的方式提供了很大的靈活性,以適應不同的計算機和操作系統環境的限制。一個環境需要的代碼跟另一個環境所需的代碼可能有所不同,因為可用的硬體或操作系統是不同的。在許多情況下,可以把用於不同環境的代碼放在同一個文件中,再在預處理階段修改代碼,使之適應當前的環境。
主要是以下幾方面的處理:
(1)宏定義指令,如 #define a b。
對於這種偽指令,預編譯所要做的是將程序中的所有a用b替換,但作為字元串常量的 a則不被替換。還有 #undef,則將取消對某個宏的定義,使以後該串的出現不再被替換。
(2)條件編譯指令,如#ifdef,#ifndef,#else,#elif,#endif等。
這些偽指令的引入使得程序員可以通過定義不同的宏來決定編譯程序對哪些代碼進行處理。預編譯程序將根據有關的文件,將那些不必要的代碼過濾掉
(3) 頭文件包含指令,如#include "FileName"或者#include <FileName>等。
在頭文件中一般用偽指令#define定義了大量的宏(最常見的是字元常量),同時包含有各種外部符號的聲明。採用頭文件的目的主要是為了使某些定義可以供多個不同的C源程序使用。因為在需要用到這些定義的C源程序中,只需加上一條#include語句即可,而不必再在此文件中將這些定義重復一遍。預編譯程序將把頭文件中的定義統統都加入到它所產生的輸出文件中,以供編譯程序對之進行處理。包含到C源程序中的頭文件可以是系統提供的,這些頭文件一般被放在/usr/include目錄下。在程序中#include它們要使用尖括弧(<>)。另外開發人員也可以定義自己的頭文件,這些文件一般與C源程序放在同一目錄下,此時在#include中要用雙引號("")。
(4)特殊符號,預編譯程序可以識別一些特殊的符號。
例如在源程序中出現的LINE標識將被解釋為當前行號(十進制數),FILE則被解釋為當前被編譯的C源程序的名稱。預編譯程序對於在源程序中出現的這些串將用合適的值進行替換。
預編譯程序所完成的基本上是對源程序的「替代」工作。經過此種替代,生成一個沒有宏定義、沒有條件編譯指令、沒有特殊符號的輸出文件。這個文件的含義同沒有經過預處理的源文件是相同的,但內容有所不同。下一步,此輸出文件將作為編譯程序的輸出而被翻譯成為機器指令。
第二個階段編譯、優化階段。經過預編譯得到的輸出文件中,只有常量;如數字、字元串、變數的定義,以及C語言的關鍵字,如main,if,else,for,while,{,}, +,-,*,\等等。
編譯程序所要作得工作就是通過詞法分析和語法分析,在確認所有的指令都符合語法規則之後,將其翻譯成等價的中間代碼表示或匯編代碼。
優化處理是編譯系統中一項比較艱深的技術。它涉及到的問題不僅同編譯技術本身有關,而且同機器的硬體環境也有很大的關系。優化一部分是對中間代碼的優化。這種優化不依賴於具體的計算機。另一種優化則主要針對目標代碼的生成而進行的。
對於前一種優化,主要的工作是刪除公共表達式、循環優化(代碼外提、強度削弱、變換循環控制條件、已知量的合並等)、復寫傳播,以及無用賦值的刪除,等等。
後一種類型的優化同機器的硬體結構密切相關,最主要的是考慮是如何充分利用機器的各個硬體寄存器存放的有關變數的值,以減少對於內存的訪問次數。另外,如何根據機器硬體執行指令的特點(如流水線、RISC、CISC、VLIW等)而對指令進行一些調整使目標代碼比較短,執行的效率比較高,也是一個重要的研究課題。
2、匯編
匯編實際上指把匯編語言代碼翻譯成目標機器指令的過程。對於被翻譯系統處理的每一個C語言源程序,都將最終經過這一處理而得到相應的目標文件。目標文件中所存放的也就是與源程序等效的目標的機器語言代碼。目標文件由段組成。通常一個目標文件中至少有兩個段:
代碼段:該段中所包含的主要是程序的指令。該段一般是可讀和可執行的,但一般卻不可寫。
數據段:主要存放程序中要用到的各種全局變數或靜態的數據。一般數據段都是可讀,可寫,可執行的。
UNIX環境下主要有三種類型的目標文件:
(1)可重定位文件
其中包含有適合於其它目標文件鏈接來創建一個可執行的或者共享的目標文件的代碼和數據。
(2)共享的目標文件
這種文件存放了適合於在兩種上下文里鏈接的代碼和數據。
第一種是鏈接程序可把它與其它可重定位文件及共享的目標文件一起處理來創建另一個 目標文件;
第二種是動態鏈接程序將它與另一個可執行文件及其它的共享目標文件結合到一起,創建一個進程映象。
(3)可執行文件
它包含了一個可以被操作系統創建一個進程來執行之的文件。匯編程序生成的實際上是第一種類型的目標文件。對於後兩種還需要其他的一些處理方能得到,這個就是鏈接程序的工作了。
二、鏈接過程
由匯編程序生成的目標文件並不能立即就被執行,其中可能還有許多沒有解決的問題。
例如,某個源文件中的函數可能引用了另一個源文件中定義的某個符號(如變數或者函數調用等);在程序中可能調用了某個庫文件中的函數,等等。所有的這些問題,都需要經鏈接程序的處理方能得以解決。
鏈接程序的主要工作就是將有關的目標文件彼此相連接,也即將在一個文件中引用的符號同該符號在另外一個文件中的定義連接起來,使得所有的這些目標文件成為一個能夠被操作系統裝入執行的統一整體。
根據開發人員指定的同庫函數的鏈接方式的不同,鏈接處理可分為兩種:
(1)靜態鏈接
在這種鏈接方式下,函數的代碼將從其所在地靜態鏈接庫中被拷貝到最終的可執行程序中。這樣該程序在被執行時這些代碼將被裝入到該進程的虛擬地址空間中。靜態鏈接庫實際上是一個目標文件的集合,其中的每個文件含有庫中的一個或者一組相關函數的代碼。
(2) 動態鏈接
在此種方式下,函數的代碼被放到稱作是動態鏈接庫或共享對象的某個目標文件中。鏈接程序此時所作的只是在最終的可執行程序中記錄下共享對象的名字以及其它少量的登記信息。在此可執行文件被執行時,動態鏈接庫的全部內容將被映射到運行時相應進程的虛地址空間。動態鏈接程序將根據可執行程序中記錄的信息找到相應的函數代碼。
對於可執行文件中的函數調用,可分別採用動態鏈接或靜態鏈接的方法。使用動態鏈接能夠使最終的可執行文件比較短小,並且當共享對象被多個進程使用時能節約一些內存,因為在內存中只需要保存一份此共享對象的代碼。但並不是使用動態鏈接就一定比使用靜態鏈接要優越。在某些情況下動態鏈接可能帶來一些性能上損害。
我們在linux使用的gcc編譯器便是把以上的幾個過程進行捆綁,使用戶只使用一次命令就把編譯工作完成,這的確方便了編譯工作,但對於初學者了解編譯過程就很不利了,下圖便是gcc代理的編譯過程:

從上圖可以看到:
預編譯
將.c 文件轉化成 .i文件
使用的gcc命令是:gcc –E
對應於預處理命令cpp
編譯
將.c/.h文件轉換成.s文件
使用的gcc命令是:gcc –S
對應於編譯命令 cc –S
匯編
將.s 文件轉化成 .o文件
使用的gcc 命令是:gcc –c
對應於匯編命令是 as
鏈接
將.o文件轉化成可執行程序
使用的gcc 命令是: gcc
對應於鏈接命令是 ld
總結起來編譯過程就上面的四個過程:預編譯、編譯、匯編、鏈接。了解這四個過程中所做的工作,對我們理解頭文件、庫等的工作過程是有幫助的,而且清楚的了解編譯鏈接過程還對我們在編程時定位錯誤,以及編程時盡量調動編譯器的檢測錯誤會有很大的幫助的。
是否可以解決您的問題?

G. 請問linux下,gcc編譯程序的過程(從讀取源文件到製作可執行程序中間所有過程,越詳細越好)

gcc -S *.c 預處理+反匯編

H. 求助c++高手,幫我編譯一個教學程序

是要用c++嗎?你後面說的數據驅動是什麼意思?要用資料庫嗎?你想題問的是主觀題還是客觀題?最好舉例以便符合你的意願,請發我郵箱:[email protected]

I. 怎麼在DOS下編譯C++程序

對於初學c/c++的人,我建議最好在使用dos 環境下的編譯器,這樣不至於在GUI的環境(比如vc、bcb)里給弄糊塗了。那麼在dos環境下如何使用c/c++的編譯器了,其實很簡單,下面用vc為例;

首先你告訴LIB和INCLUDE在什麼地方,在就告訴編譯的程序在什麼地方,這樣我們可以在任何目錄下都可以使用編譯器,要作到上面的,就理所當然要設定path了!設定如下:

假定你的vc安裝在如下目錄:
C:\Program Files\Microsoft Visual Studio\VC98\Include
C:\Program Files\Microsoft Visual Studio\VC98\MFC\Include

C:\Program Files\Microsoft Visual Studio\VC98\Lib
C:\Program Files\Microsoft Visual Studio\VC98\MFC\Lib

C:\Program Files\Microsoft Visual Studio\VC98\Bin
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin

那麼寫一個批處理文件(autoexec.bat),內容如下:
set path=C:\Program Files\Microsoft Visual Studio\VC98\Bin;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin (找到vc的編譯器cl.exe位置,同時也可以調用MSPDB60.DLL文件)

set Include=C:\Program Files\Microsoft Visual Studio\VC98\Include;C:\Program Files\Microsoft Visual Studio\VC98\MFC\Include

set Lib=C:\Program Files\Microsoft Visual Studio\VC98\Lib;
C:\Program Files\Microsoft Visual Studio\VC98\MFC\Lib

當然如果你不用mfc也可以這樣:

set path=C:\Program Files\Microsoft Visual Studio\VC98\Bin;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin

set Include=C:\Program Files\Microsoft Visual Studio\VC98\Include

set Lib=C:\Program Files\Microsoft Visual Studio\VC98\Lib

如果你是使用的bcb的編譯器,設置方法與上面類似!

那麼如何在dos 用c/c++的編譯器編譯程序呢?
那就更簡單了!如下:

C:\> CL test.cpp <回車>(呵呵,當然你可以在其他目錄下去執行,只要是你編譯的cpp文件的目錄就行)

至於執行cl.exe有些什麼參數實現條件編譯,就要自己去查了!:)

當然,上面的方法不適合開發大型的項目,因為很明顯文檔、程序管理不方便!

J. 怎麼編譯運行JAVA程序

先安裝JDK,然後配置環境變數!
我的電腦(右擊)→屬性→高級→環境變數
在系統變數中找到PATH,然後把JDK的安裝路徑寫上去,假如你的路徑是C:\Sun\jdk
那麼你就在PATH中添加下面的路徑:
C:\Sun\jdk\bin;
(註:後面的分號不能少)
然後在系統變數中找到CLASSPATH如果沒有就自己新建一個!
把下面這個路徑寫進CLASSPATH里去:
.;C:\Sun\jdk\lib\dt.jar;C:\Sun\jdk\lib\tools.jar;
測試的時候在C盤根目錄下建一個HelloWorld.java的文件,然後在CMD中,在C盤的根目錄下輸入
javac HelloWorld.java
如果程序沒錯的話,再輸入
java HelloWorld
這樣就會輸出結果了!

閱讀全文

與特殊程序編譯教學相關的資料

熱點內容
用紙做解壓玩具不用澆水 瀏覽:582
谷輪壓縮機序列號 瀏覽:734
牛頓插值法編程 瀏覽:364
php多用戶留言系統 瀏覽:727
安卓和蘋果如何切換流量 瀏覽:703
怎麼知道dns伺服器是多少 瀏覽:976
5995用什麼簡便演算法脫式計算 瀏覽:918
電腦上如何上小米雲伺服器地址 瀏覽:921
手機資料解壓密碼 瀏覽:444
44引腳貼片單片機有哪些 瀏覽:692
阿里程序員腦圖 瀏覽:189
廣東編程貓學習班 瀏覽:708
上海數控編程培訓學校 瀏覽:313
怎麼下載我的解壓神器 瀏覽:634
lib文件無用代碼會編譯嗎 瀏覽:28
我的世界嗨皮咳嗽伺服器怎麼下 瀏覽:1002
mvn命令順序 瀏覽:978
車貸還完多少時間解壓 瀏覽:965
java頁面開發 瀏覽:820
學編程的小發明 瀏覽:25