當前位置:首頁 » 編程軟體 » 什麼叫編譯器沒有提供二進制目錄

什麼叫編譯器沒有提供二進制目錄

發布時間: 2023-10-01 14:52:38

① C語言編譯後顯示沒有這樣的文件或目錄是什麼意思

最好上個截圖,應該是庫文件的路徑設置不對。通常在集成環境的選項中有連接文件庫的路徑設置。

② 請問編譯程序和解釋程序是什麼意思什麼是編譯器、什麼是解釋器

編譯和解釋是從源程序到可執行程序轉換的兩種方法。編譯,是在源程序完成後,先轉換成中間代碼,然後再轉換成二進制代碼,完成後,每次執行,都直接執行這個二進制代碼。一次轉換完成。
而解釋程序的執行不同,他在執行時,是一次讀入一條源代碼,然後分析轉換成二進制代碼,執行這條語句,然後再讀入一條源代碼,再轉換,再執行。是一邊轉換一邊執行。編譯器和解釋器就是完成編譯和解釋工作的一個軟體。

③ 什麼是編譯器

編譯器,是將便於人編寫,閱讀,維護的高級計算機語言翻譯為計算機能識別,運行的低級機器語言的程序。編譯器將源程序(Source program)作為輸入,翻譯產生使用目標語言(Target language)的等價程序。源程序一般為高級語言(High-level language),如Pascal,C++等,而目標語言則是匯編語言或目標機器的目標代碼(Object code),有時也稱作機器代碼(Machine code)。

一個現代編譯器的主要工作流程如下:
源程序(source code)→預處理器(preprocessor)→編譯器(compiler)→匯編程序(assembler)→目標程序(object code)→連接器(鏈接器,Linker)→可執行程序(executables])

工作原理
翻譯是從源代碼(通常為高級語言)到能直接被計算機或虛擬機執行的目標代碼(通常為低級語言或機器言)。然而,也存在從低級語言到高級語言的編譯器,這類編譯器中用來從由高級語言生成的低級語言代碼重新生成高級語言代碼的又被叫做反編譯器。也有從一種高級語言生成另一種高級語言的編譯器,或者生成一種需要進一步處理的的中間代碼的編譯器(又叫級聯)。

典型的編譯器輸出是由包含入口點的名字和地址以及外部調用(到不在這個目標文件中的函數調用)的機器代碼所組成的目標文件。一組目標文件,不必是同一編譯器產生,但使用的編譯器必需採用同樣的輸出格式,可以鏈接在一起並生成可以由用戶直接執行的可執行程序。

編譯器種類
編譯器可以生成用來在與編譯器本身所在的計算機和操作系統(平台)相同的環境下運行的目標代碼,這種編譯器又叫做「本地」編譯器。另外,編譯器也可以生成用來在其它平台上運行的目標代碼,這種編譯器又叫做交叉編譯器。交叉編譯器在生成新的硬體平台時非常有用。「源碼到源碼編譯器」是指用一種高級語言作為輸入,輸出也是高級語言的編譯器。例如: 自動並行化編譯器經常採用一種高級語言作為輸入,轉換其中的代碼,並用並行代碼注釋對它進行注釋(如OpenMP)或者用語言構造進行注釋(如FORTRAN的DOALL指令)。

預處理器(preprocessor)
作用是通過代入預定義等程序段將源程序補充完整。

編譯器前端(frontend)
前端主要負責解析(parse)輸入的源程序,由詞法分析器和語法分析器協同工作。詞法分析器負責把源程序中的『單詞』(Token)找出來,語法分析器把這些分散的單詞按預先定義好的語法組裝成有意義的表達式,語句 ,函數等等。
例如「a = b + c;」前端詞法分析器看到的是「a, =, b , +, c;」,語法分析器按定義的語法,先把他們組裝成表達式「b + c」,再組裝成「a = b + c」的語句。
前端還負責語義(semantic checking)的檢查,例如檢測參與運算的變數是否是同一類型的,簡單的錯誤處理。最終的結果常常是一個抽象的語法樹(abstract syntax tree,或 AST),這樣後端可以在次基礎上進一步優化,處理。

編譯器後端(backend)
編譯器後端主要負責分析,優化中間代碼(Intermediate representation)以及生成機器代碼(Code Generation)。

一般說來所有的編譯器分析,優化,變型都可以分成兩大類: 函數內(intraproceral)還是函數之間(interproceral)進行。很明顯,函數間的分析,優化更准確,但需要更長的時間來完成。

編譯器分析(compiler analysis)的對象是前端生成並傳遞過來的中間代碼,現代的優化型編譯器(optimizing compiler)常常用好幾種層次的中間代碼來表示程序,高層的中間代碼(high level IR)接近輸入的源程序的格式,與輸入語言相關(language dependent),包含更多的全局性的信息,和源程序的結構;中層的中間代碼(middle level IR)與輸入語言無關,低層的中間代碼(Low level IR)與機器語言類似。 不同的分析,優化發生在最適合的那一層中間代碼上。

常見的編譯分析有函數調用樹(call tree),控制流程圖(Control flow graph),以及在此基礎上的 變數定義-使用,使用-定義鏈(define-use/use-define or u-d/d-u chain),變數別名分析(alias analysis),指針分析(pointer analysis),數據依賴分析(data dependence analysis)等等。

上述的程序分析結果是編譯器優化(compiler optimization)和程序變形(compiler transformation)的前提條件。常見的優化和變新有:函數內嵌(inlining),無用代碼刪除(Dead code elimination),標准化循環結構(loop normalization),循環體展開(loop unrolling),循環體合並,分裂(loop fusion,loop fission),數組填充(array padding),等等。 優化和變形的目的是減少代碼的長度,提高內存(memory),緩存(cache)的使用率,減少讀寫磁碟,訪問網路數據的頻率。更高級的優化甚至可以把序列化的代碼(serial code)變成並行運算,多線程的代碼(parallelized,multi-threaded code)。

機器代碼的生成是優化變型後的中間代碼轉換成機器指令的過程。現代編譯器主要採用生成匯編代碼(assembly code)的策略,而不直接生成二進制的目標代碼(binary object code)。即使在代碼生成階段,高級編譯器仍然要做很多分析,優化,變形的工作。例如如何分配寄存器(register allocatioin),如何選擇合適的機器指令(instruction selection),如何合並幾句代碼成一句等等。

④ 剛下的DEV C++,如何解決:在編譯器設置 "TDM-GCC 4.8.1 32-bit Release" 中沒有提供二進制目錄。中止編譯

在C盤中找到以自己命名的文件夾(用戶文件夾里找),打開隱藏文件,出現AppData文件夾,刪除devc++就好。親試,這種問題絕對管用!

⑤ 什麼是編譯程序

編譯程序指將某一種程序設計語言寫的程序翻譯成等價的另一種語言的程序的程序, 稱之為編譯程序

編譯程序也稱為編譯器,是指把用高級程序設計語言書寫的源程序,翻譯成等價的機器語言格式目標程序的翻譯程序。編譯程序屬於採用生成性實現途徑實現的翻譯程序。

它以高級程序設計語言書寫的源程序作為輸入,而以匯編語言或機器語言表示的目標程序作為輸出。編譯出的目標程序通常還要經歷運行階段,以便在運行程序的支持下運行,加工初始數據,算出所需的計算結果。

編譯程序的實現演算法較為復雜,這是因為它所翻譯的語句與目標語言的指令不是一一對應關系,而是一多對應關系,同時也因為它要處理遞歸調用、動態存儲分配、多種數據類型,以及語句間的緊密依賴關系。

由於高級程序設計語言書寫的程序具有易讀、易移植和表達能力強等特點,編譯程序廣泛地用於翻譯規模較大、復雜性較高、且需要高效運行的高級語言書寫的源程序。

(5)什麼叫編譯器沒有提供二進制目錄擴展閱讀:

編譯流程分為了四個步驟:

1.預處理,生成預編譯文件(.文件)

2.編譯,生成匯編代碼(.s文件)

3.匯編,生成目標文件(.o文件)

4.鏈接,生成可執行文件

⑥ 用Dev-C++中編譯時就出現「在編譯器設置 "New compiler" 中沒有提供二進制

應該是沒有正確配置MinGW GCC工具集,有兩個版本的Dev-C++安裝包,一個是自帶並配置好GCC的,另一個只是IDE沒有編譯器工具集,後者需要手工在Dev-C++的目錄下建立MinGW32或/和MinGW64目錄,然後把另外下載的MinGW放進去,根據32bit/64bit不同的版本,然後在Dev-C++里編譯器配置里點自動尋找編譯器,它才能自動發現並配置好

⑦ jsp預編譯問題

這個方法是到目前為止進行JSP預編譯最方便的途徑( flick a switch 途徑) 他有許多指出來毫無意義的缺點 如果一個錯誤在JSP的編譯期間或在部署(或重新部署) 的時候發生 Web 應用程序的預編譯將會在例外處暫停 另外 如果在一個特定的Web應用程序裡面有許多JSP文件的情況 declarative預編譯顯著的影響著部署時間 阻斷部署直到所有的文件都被編譯 對於大型的應用程序 當出現數以百計的JSP 文件以declarative預編譯被執行的時候 這種部署時間趨向以分鍾來計算 (在某些情況 到 分鍾 其他情況可能更長時間) 設想開始一個伺服器實例 在一個特定的Web應用程序周期內進入部署狀態用declarative 預編譯激活李模坦 如果在應用內有很多的JSP文件以及部署 接近完成時就已經花費了大量的時間 在編譯期間由於拋出一個例外而突然失敗 當然會引起挫折感 雖然起先看起來比較方便 但declarative 編譯對生產系統管理造成重大的風險 因此應該在經過慎重的考慮後再使用它

程序方式的預編譯

在WLS下最可靠的預編譯JSP的方法是使用java命令行 weblogic jspc 它位於WLS安裝的lib目錄之下的weblogic jar文件中 這個工具允許開發者在發展階段和在部署前解決編譯時間問題的時候編譯需要的JSP文件 它也為生產系統提供一個有能力實現JSP預編譯的管理員 這種用法的主要好處是

● 文件可以被預編譯一次然後可以被多次部署 (這不被伺服器實例的重復利用所影響)

● 編譯時的例外可以被預先解決而不影響部署

● 類可以通過集群部署

使用weblogic jspc的缺點是需要人工干涉 並且它在開發時並當在JSP文件變得過時的時候必須被重新運行 然而 考慮到前面的兩個方法的討論 我們幾乎不能將這種不方便當成該方法的一個缺點 因此推薦它作為碼數最可靠和最靈活的機制來實現JSP預編譯

執行weblogic jspc

為了更有效的使用weblogic jspc 你必須首先了解它的用法和語法 這篇文章我們將利用WLS SP 的工具的功能 注意 下面給出的語法和最好的慣例應該應用於WLS 的所有版本以及新的WLS

為了調用命令行JSP編譯器(weblogic jspc) 你必須確定下面的內容

● PATH環境變數必須包含你機器上安裝的J SE 包的二進制目錄(例如 /opt/j se/ /sdk/bin 或者c:sunsoftj se sdkin) 以獲得JVM運行時的支持 如果你打算使用javac作為你的JSP編譯的Java編譯器 要確定PATH包含全部Java 的軟體開發工具包(SDK)的二進制目錄 並且不僅僅是JRE(Java Runtime Engine Java運行時間引擎) 因為沒有編譯器和JRE關聯 如果你打算使用一個編譯器而不是javac(例如 Jikes) 也要為那個編譯器確定在PATH中包含正確的目錄

● 設置Java系統類路徑用來包含來自WLS SP 安裝目錄的weblogic jar文件 通過在產品庫目錄下默認建立(例如 /opt/bea/wlserver /lib/weblogic jar或者c:eawlserv er libweblogic jar) 此外 請確定在JSP編譯階段中你可哪桐能需要的參考類(JAR或類文件)也在你的類路徑中

在第一次執行weblogic jspc之前 你需要測試你的命令行配置是否是按上述配置 它可以通過簡單運行一個WLS版本檢查來完成 使用命令 java weblogic version 這個命令應該返回下面的內容

which should return the following:

WebLogic Server SP / / : :

#

WebLogic XML Mole SP / /

: : #

如果你的輸出和上面的不相似(和你運行的版本相對應) 在進行JSP預編譯前 要重新訪問PATH和類路徑變數將其設置成你的當前命令行環境

一般的weblogic jspc的語法如下面給出的

java weblogic jspc [options] …

在一個編譯器的單一調用中默認情況下JSP編譯器可以編譯一個JSP文件或一組JSP文件 並且可以通過設置命令行選項 編譯器可以以不同的方法工作 下面給出一個例子

java

weblogic jspc

webapp mywebapp

piler javac

pileFlags g

classpath /u/apps/dist/src/lib jar

d

package slackwerks mywebapp jsp

mentary

keepgenerated

k

mywebappindex jsp

這篇文章只列舉了一個例子 如果你要想更加了解weblogic jspc如何能在你的環境中使用和管理的話 請參閱/wldj 我們提供了對整套的工作選項 使用的含義以及相關聯問題的討論

結論

lishixin/Article/program/Java/hx/201311/25749

熱點內容
小米5s怎麼鎖屏密碼忘了怎麼辦 發布:2024-07-22 03:09:19 瀏覽:71
紙片估演算法 發布:2024-07-22 02:46:32 瀏覽:285
茶杯頭安卓版如何 發布:2024-07-22 02:46:29 瀏覽:68
cl編譯器win7 發布:2024-07-22 02:46:27 瀏覽:693
連接雲伺服器如何注冊 發布:2024-07-22 02:45:48 瀏覽:218
我的世界賺金幣活躍度高伺服器 發布:2024-07-22 02:45:11 瀏覽:683
linux查看mysql資料庫與 發布:2024-07-22 02:35:06 瀏覽:424
steam上哪些游戲不吃配置還好玩 發布:2024-07-22 02:35:05 瀏覽:784
android圖片文字顯示 發布:2024-07-22 02:35:00 瀏覽:255
運行達芬奇有什麼配置 發布:2024-07-22 02:25:01 瀏覽:911