调用编译器
编译共分为四个阶段:预处理阶段、编译阶段、汇编阶段、链接阶段。
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
然后在系统里加了环境变量才可以的
我以前这样编译过