文本鏈接編譯器連接器配置
① 易語言無法定位鏈接器!請檢查 tools\link.ini 中的配置是否正確
1、打開易語言工作目錄(如果你不知道的話,那就找到易語言的快捷方式圖標,然後右鍵-->屬性-->查找文件或打開文件位置)
2、找到一個名為「VC98linker」的文件夾(如果你的易語言目錄裡面沒有就網路下載,然後復制裡面就可以了)
3、運行裡面的「link.e」源代碼,不要修改,直接點運行
4、點擊「修改」按鈕,提示成功後即可即可!
② 用codeblocks配置運行編譯器的「環境」,也就是設置路徑時用戶變數里沒有Path怎麼辦
IDE的話就不需要輸入選項,但是不意味著不需要指明,只是一切都被圖形化了,只需要配置就可以了。好了,看看codebloc是如何配置的,當然以實驗為例子了。
1. 新建項目
2. 配置編譯器和連接器路徑
這個search directories 就是頭文件所在路徑,添加這個路徑後就可以在程序裡麵包含頭文件了。
有了頭文件還不行,還要把連接器需要連接的庫添加進來。否則程序只能編譯卻不能鏈接,也就不能生成可執行文件了。
3. 然後,然後就沒有然後了。
③ 簡述一下編譯器和鏈接器的作用
1、編譯器:
編譯器對源文件進行編譯,就是把源文件中的文本形式存在的源代碼翻譯成機器語言形式的目標文件的過程,在這個過程中,編譯器會進行一系列的語法檢查。如果編譯通過,就會把對應的CPP轉換成OBJ文件。
2、鏈接器:
當鏈接器進行鏈接的時候,首先決定各個目標文件在最終可執行文件里的位置。然後訪問所有目標文件的地址重定義表,對其中記錄的地址進行重定向(加上一個偏移量,即該編譯單元在可執行文件上的起始地址)。
然後遍歷所有目標文件的未解決符號表,並且在所有的導出符號表裡查找匹配的符號,並在未解決符號表中所記錄的位置上填寫實現地址。最後把所有的目標文件的內容寫在各自的位置上,再作一些另的工作,就生成一個可執行文件。
④ Visual Unit 設定編譯器和連接器
預先安裝好VC,比如我安裝的是Microsoft visual studio 2005.
再來,Visual Unit 4.0 安裝,完成後,重新打開進入演示版。
在窗口的主界面,點擊菜單欄「工程」-》「打開示例工程」,選擇一個自己想打開的項目。
點擊菜單欄「工具」-》「設定」。裡面便有「編譯器」和「編輯器」。
點擊「編譯器」,「名稱」項,選擇你安裝VC對應的Visual C++ 版本,比如"Visual C++ 2005". 編譯器和鏈接器,同樣道理,選擇之前你安裝VC的根目錄下,對應的編譯器和鏈接器。比如:
「D:\Program files\Microsoft Visual Studio 2005\VC\bin\cl.exe」
「D:\Program files\Microsoft Visual Studio 2005\VC\bin\link.exe」。
這樣便可以了。
如果項目執行測試,還是有類似編譯器或者鏈接器的問題,請繼續看以下注意事項,檢查下工程屬性是否一致:
待工程打開載入後,再次點擊菜單欄「工程」-》「工程屬性」,
在「常規」界面,選擇你需要的測試代碼編譯器,比如我裝的VC2005,那麼我就選擇Visual C++ 2005.
點擊第五個tab "鏈接"。點擊「環境變數」。在變數名下拉列表中,點擊您安裝VC的版本對應的dir,比如「vc2005_dir」. 在下面的「值」一欄,點擊「瀏覽」找到VC對應的根目錄。比如「D:/Program files/Microsoft Visual Studio 2005」。「OK」確認。再點擊當前小窗口的「保存」。關閉小窗口。
退回到「工程屬性」窗口,檢查「庫文件搜索目錄」,是否是自己設定的vc2005_dir為頭的目錄,比如:「$(vc2005_dir)/vc/lib」.
其它地方比如「頭文件」里的目錄設置,亦是如此。不過只要你設置了一處的環境變數,其它地方也就會自動調用你設置的路徑下的編譯器了。
希望對你有幫助。:)
⑤ 如何在Source Insight文本編輯器裡面配置C或者C++編譯器
alt+t 組合鍵,在這裡面配置
⑥ 如何配置CSC編譯器
1.配置C#命令行編譯器:
我的電腦 —〉高級—〉環境變數—〉Path —〉添
加";C:\Windows\Microsoft.NET\Framework\v2.0.50727"(Path的最後一個路徑雖版本
的改變而改變)。csc.exe(C#命令行編譯器)就放在該目錄下。通過csc /?來查看所有參
數。
2.配置其它.NET命令行工具
我的電腦 —〉高級—〉環境變數—〉Path —〉添加";D:\Program
Files\Microsoft Visual Studio 8\SDK\v2.0\Bin"(Path隨安裝目錄的改變而改變,如
果安裝在C:\,則為";C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin"
3.通過csc命令行編譯器來編譯C#文件,以下為一個例子
1)在D盤下新建一個名為test.txt文本文件,輸入以下文本後保存為test.cs文件
復制代碼 代碼如下:
//一個簡單的C#應用程序.
using System;
class TestApp
{
public static void Main()
{
Console.WriteLine("Test! 1,2,3");
Console.ReadKey();
}
}
2)運行 —〉cmd —〉D:\ —〉csc D:\test.cs, 編譯成功後在D盤下生成test.exe可執行文件
3)輸入test.exe,回車,顯示結果(Test! 1,2,3)
4.接下來通過引入System.Windows.Forms命名空間來生成Windows Forms程序,test.cs
修改為如下後再次編譯
復制代碼 代碼如下:
//一個簡單的C#應用程序.
using System;
//一定要加上下面一行
using System.Windows.Forms;
class TestApp
{
public static void Main()
{
Console.WriteLine("Test! 1,2,3");
MessageBox.Show("Hello...","Application");
Console.ReadKey();
}
}
5.使用csc.exe編譯多個源文件
復制代碼 代碼如下:
//HelloMessage.cs
using System;
using System.Windows.Forms;
class HelloMessage
{
public void Speak()
{
MessageBox.Show("Hello");
}
}
//Test.cs
using System;
class TestApp
{
public static void Main()
{
Console.WriteLine("Testing! 1,2,3");
HelloMessage h = new HelloMessage();
h.Speak();
}
}
參數/out:編譯結果的存放位置和名稱
復制代碼 代碼如下:
csc/out:e:\a.exe test.cs HelloMessage.cs
或者編譯當前目錄下的所有cs文件: csc/out:e:\a *cs
⑦ 易語言靜態編譯。無法定位鏈接器!請檢查 tools\link.ini 中的配置是否正確來高手教我。
打開tools文件夾里的link.ini配置文本,找到其中一句:ilnker="C:\full\path\link.exe" 把它修改為: ilnker=" 這里是你易語言安裝的路徑 \VC98linker\bin\link.exe" 如我的配置:ilnker=" F:\程序軟體\e\VC98linker\bin\link.exe" , F:\程序軟體\e 是我的易語言安裝路徑。 你是否下載了靜態編譯VC6連接器,你把vc6鏈接器解壓到易語言安裝的目錄里就可以了。
⑧ 編譯器跟編輯器有什麼區別。還有什麼是鏈接器
鏈接器(Linker)是一個程序,將一個或多個由編譯器或匯編器生成的目標文件外加庫鏈接為一個可執行文件。
是軟體程序,一般是指用來修改電腦檔案的編寫軟體,但也有人稱 PE2、HE4(漢書)……等文書軟體為編輯器。常見的編輯器有文本編輯器、網頁編輯器、源程序編輯器、圖像編輯器,聲音編輯器,視頻編輯器等。
簡單講,編譯器就是將「一種語言(通常為高級語言)」翻譯為「另一種語言(通常為低級語言)」的程序。一個現代編譯器的主要工作流程:源代碼 (source code) → 預處理器 (preprocessor) → 編譯器 (compiler) → 目標代碼 (object code) → 鏈接器 (Linker) → 可執行程序 (executables)
⑨ 什麼是編譯器
編譯器
編譯器是一種特殊的程序,它可以把以特定編程語言寫成的程序變為機器可以運行的機器碼。我們把一個程序寫好,這時我們利用的環境是文本編輯器。這時我程序把程序稱為源程序。在此以後程序員可以運行相應的編譯器,通過指定需要編譯的文件的名稱就可以把相應的源文件(通過一個復雜的過程)轉化為機器碼了。
[編輯]編譯器工作方法
首先編譯器進行語法分析,也就是要把那些字元串分離出來。然後進行語義分析,就是把各個由語法分析分析出的語法單元的意義搞清楚。最後生成的是目標文件,我們也稱為obj文件。再經過鏈接器的鏈接就可以生成最後的可執行代碼了。有些時候我們需要把多個文件產生的目標文件進行鏈接,產生最後的代碼。我們把一過程稱為交叉鏈接。
一個現代編譯器的主要工作流程如下:
* 源程序(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),如何合並幾句代碼成一句等等。