調用編譯器
編譯共分為四個階段:預處理階段、編譯階段、匯編階段、鏈接階段。
1、預處理階段:
主要工作是將頭文件插入到所寫的代碼中,生成擴展名為「.i」的文件替換原來的擴展名為「.c」的文件,但是原來的文件仍然保留,只是執行過程中的實際文件發生了改變。(這里所說的替換並不是指原來的文件被刪除)
2、匯編階段:
插入匯編語言程序,將代碼翻譯成匯編語言。編譯器首先要檢查代碼的規范性、是否有語法錯誤等,以確定代碼的實際要做的工作,在檢查無誤後,編譯器把代碼翻譯成匯編語言,同時將擴展名為「.i」的文件翻譯成擴展名為「.s」的文件。
3、編譯階段:
將匯編語言翻譯成機器語言指令,並將指令打包封存成可重定位目標程序的格式,將擴展名為「.s」的文件翻譯成擴展名為「.o」的二進制文件。
4、鏈接階段:
在示例代碼中,改代碼文件調用了標准庫中printf函數。而printf函數的實際存儲位置是一個單獨編譯的目標文件(編譯的結果也是擴展名為「.o」的文件),所以此時主函數調用的時候,需要將該文件(即printf函數所在的編譯文件)與hello world文件整合到一起,此時鏈接器就可以大顯神通了,將兩個文件合並後生成一個可執行目標文件。
Ⅱ 怎麼調用編譯器
鏈接有分為是靜態還是動態,一般我們調用的函數都在系統目錄下所有鏈接的時候是靜態的方式只代碼中不會存在函數的代碼只有原型,當啟動程序時會自動載入到程序中
Ⅲ 如何調用微軟編譯器
你的意思是在命令行使用么?
我講不明白 ,你自己看吧 我網上找的
微軟C/C++編譯器命令行模式用法
微軟C/C++編譯器編譯選項數目眾多,在「命令提示符」窗口鍵入cl /?即可查看完整列表
(見附錄1)。比如說,/GX啟用C++異常處理機制,/GR啟用C++ RTTI,等等。在此不打算
詳細討論這些編譯選項用法。
以下是我的測試目錄f:\vstest中的一個樣例文件:
//1.cpp
#include <iostream>
using namespace std;
void main()
{
cout << "Hello Royal"<<endl;
}
你現在可以進入該目錄執行如下編譯命令:
F:\vstest>cl /GX 1.cpp
運行程序,即會產生如下輸出:
Hello Royal
Ⅳ java 調用編譯器
根本就不知道你要做什麼,腦子里一片混亂。
eclipse不是編譯器,那個叫集成開發環境(IDE)。
如果你的程序是java程序,直接調用內建的com.sun.tools.javac.*就可以。
如果你要做編譯器,可能還要學個幾年。
---------------------------------------------
你要做的事情我明白了,不過要運行java程序還是比較麻煩的。
這個裡面有些代碼的例子:
http://www.rgagnon.com/javadetails/java-0014.html
不過實際上能夠考慮比較多的情況的代碼大約需要上萬行。我做了好幾年還是沒有完全完成。
Ⅳ 怎麼調用編譯器編譯C#的.CS文件
CSC.exe在你的安裝目錄下面,一般在 C:\WINDOWS\Microsoft.NET\Framework\ "這里選你按裝的版本"\
如果你實在找不到,開始-搜索 搜一下 「CSC.exe」 ,但是你只能在這個目錄下編譯,如果你想在任意目錄下編譯,你把這個csc.exe文件的所在路徑復制下來,添加到環境變數PATH後(我的電腦,屬性,高級,環境變數,系統變數,path,編輯),注意要在原來的結尾加個「;」再把你復制下來的路徑添加在這里,這樣你就可以在任意目錄下調用CSC.EXE 編譯文件很方便。
Ⅵ 求大牛解答C++怎麼再次調用系統編譯器編譯指定c文件
A.cpp
#include <iostream>
#include <unistd.h> // exec and fork
#include <sys/types.h>
#include <sys/wait.h> //for wait
#include <stdio.h> // for remove
#include <sys/stat.h> //for stat
extern char **environ;
int main()
{
pid_t pid = fork();
if(pid == 0)
{
struct stat st;
int r = stat("./b.out", &st);
if(r == 0)
{
remove("./b.out");
}
//close std in out err
for(int i=0; i< 3; i++)
{
close(i);
}
execle("/usr/bin/g++", "g++", "./B.cpp", "-o", "./b.out", (char *)NULL, environ);
}
else if(pid > 0)
{
int status = -1;
waitpid(pid, &status, 0);
//exec success
if(status == 0)
{
//fork again
pid = fork();
if(pid == 0)
{
close(0);
close(2);
//leave std out only
execle("./b.out", "b.out", (char *)NULL, environ);
}
else if(pid > 0)
{
status = -1;
waitpid(pid, &status, 0);
}
}
}
return 0;
}
B.cpp
#include <iostream>
int main()
{
std::cout << "This is B main" << std::endl;
}
如果要在A中顯示B的運行結果,而不是在終端,還需要用pipe,等下貼代碼
Ⅶ c#中如何調用C編譯器
C的編譯器?比如gcc?
在.net中可以啟用一個cmd.exe進程來執行命令行命令。這個命令行裡面可以調用gcc來實現你需要的對C語言進行編譯的業務。
string cmdLine="xxxx\\xxxxx\\gcc.exe xxxxxxxxxxx";
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "cmd.exe";
p.Start();
p.StandardInput.WriteLine(cmdLine);
p.WaitForExit();
p.Close();
如果在BS中寫這些的話,我覺得首先需要把gcc的路徑變成絕對路徑,然後保證IIS的運行身份對gcc日誌,源文件,目的地的相應許可權。
Ⅷ C語言模擬命令行調用GCC編譯器編譯一個.c文件
包含<stdlib.h>頭文件,調用的時候用
system("gcc
-o
yourfile
yourfile.c");
就可以了。
參考http://..com/link?url=BevN1jtqwLRE6WRKSJ3HpGp7_t4Z5J--5B4xvZObLoYws0JVfdkE35X_
Ⅸ 如何調用GNU或微軟編譯器
VC++沒用過命令行界面,g++知道一點:
通常是這樣的:
g++ -o prog1 prog1.cpp
在windows下使用g++,要安裝cygwin並設置環境變數。gnu系列編譯器的使用指南可以到www.gun.org上下載使用手冊或在線瀏覽,或者在命令行鍵入
man g++
g++ --help
Ⅹ 怎麼用DOS命令調用C語言編譯器
是CL 不是c1
而且你要先安裝了vc6
然後在系統里加了環境變數才可以的
我以前這樣編譯過