Ⅰ 編譯器跟編輯器有什麼區別。還有什麼是鏈接器
鏈接器(Linker)是一個程序,將一個或多個由編譯器或匯編器生成的目標文件外加庫鏈接為一個可執行文件。
是軟體程序,一般是指用來修改電腦檔案的編寫軟體,但也有人稱 PE2、HE4(漢書)……等文書軟體為編輯器。常見的編輯器有文本編輯器、網頁編輯器、源程序編輯器、圖像編輯器,聲音編輯器,視頻編輯器等。
簡單講,編譯器就是將「一種語言(通常為高級語言)」翻譯為「另一種語言(通常為低級語言)」的程序。一個現代編譯器的主要工作流程:源代碼 (source code) → 預處理器 (preprocessor) → 編譯器 (compiler) → 目標代碼 (object code) → 鏈接器 (Linker) → 可執行程序 (executables)
Ⅱ 用C語言編的程序,要生成可執行文件的時候,要編譯、鏈接,編譯是什麼意思啊鏈接是什麼意思編譯和鏈接
編譯就是把C代碼轉換成CPU可執行的機器指令,每個.c文件生成一個.obj文件。
鏈接就是把生成的(多個) .obj 文件及用到的庫文件(.lib)一起組合生成可執行文件(.exe)。
Ⅲ 編譯器的功能是什麼
1、編譯器就是將「一種語言(通常為高級語言)」翻譯為「另一種語言(通常為低級語言)」的程序。一個現代編譯器的主要工作流程:源代碼 (source code) → 預處理器 (preprocessor) → 編譯器 (compiler) → 目標代碼 (object code) → 鏈接器(Linker) → 可執行程序 (executables)。
2、工作方法:
1)、首先編譯器進行語法分析,也就是要把那些字元串分離出來。
2)、然後進行語義分析,就是把各個由語法分析分析出的語法單元的意義搞清楚。
3)、最後生成的是目標文件,也稱為obj文件。
4)、再經過鏈接器的鏈接就可以生成最後的EXE文件了。
5)、有些時候需要把多個文件產生的目標文件進行鏈接,產生最後的代碼。這一過程稱為交叉鏈接。
Ⅳ 簡述一下編譯器和鏈接器的作用
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」.
其它地方比如「頭文件」里的目錄設置,亦是如此。不過只要你設置了一處的環境變數,其它地方也就會自動調用你設置的路徑下的編譯器了。
希望對你有幫助。:)