A. 程序是如何编写的
设计环境 程序也就是指令的集合,它告诉计算机如何执行特殊的任务。
B. 如何用C语言编译一个程序:用星号输出你输入的英文和符号,可以是字符串(类同汉字库点阵)但不是汉字。
用星号自己编一个字库,然后用switch把输入的字符一一映射上去输出就好了
C. ubuntu如何编译fortran77程序
ubuntu编译fortran代码的方法:
1.将编译器intel fortran安装好。
2.写一个fortran测试程序,例如:“hello.f90”,代码如下。
program main
write(*,*) "hello"
stop
end
3.使用以下命令进行编译。
ifort -c hello hello.f90
注:编译后生成可执行文件hello 如果直接用ifort hello.f90,则默认生成文件是a.out
4.执行可执行文件,在当前目录下输入以下命令查看结果。
D. 如何用JDK编译java程序
JAVA版hello world全攻略侯光敏 看到很多技术网站的BBS上面充斥着java初学者的关于运行第一个java程序的求助信息,我觉得作为过来人很有写这篇文章的必要,因为他们遇到的都是些很低级的问题,但是让这些问题占据bbs上那么多宝贵的空间就太不应该了。 要搞清楚的基本概念 java是一种跨平台的网络语言,为了能够在不同平台上运行,它使用了虚拟机这个概念。后缀名为java的文件是源代码文件,它经过编译后生成的是class文件。虚拟机执行的就是这些class文件,将它们转化成为不同平台能够运行的命令。这就是为什么java的效率比较低的原因。也是因为这个原因,在java里没有其它语言的使用者熟悉的exe文件的概念。 执行hello world的方法 切记:在命令行中输入 javac 源文件名.java (编译) java 源文件名 (执行,没有后缀) 这里说的是java application,里面包括main函数。 如果hello world是applet版的,在命令行中输入appletviewer 源文件名 (已经编译后的class文件) 如果class文件已经嵌入了html网页中,直接用IE打开就行了。 application经常出现的错误 系统提示Exception in thread "main " java.lang.NoClassDefFoundError。出现这个提示的原因可能有: 1 你把文件名拼错了,java对大小写是敏感的。打错了当然找不到文件。 2 虚拟机没有找到必须的类库。你可能没有在autoexec.bat文件中设置classpath。进入windows的运行,输入sysedit,然后在autoexec.bat文件中加入这么一行:set classpath=你的jdk的安装目录/lib; 例如set classpath=c:/jdk1.3.0_02/lib; 保存退出后,你要在dos窗口的c根目录下执行一遍autoexec.bat文件已保证被设置了,当然,如果你愿意也可以重启机器。 系统提示HelloWorld.java:1: Public class helloworld must be defined in a file called "HelloWorld.java ". public class helloworld{^ 一个Java源程序中可以定义多个类,但是,具有public 属性的类只能有一个,而且要与文件名相一致。还有,main方法一定要放在这个public 的类之中,这样才能运行这个类。 系统提示Exception in thread "main " java.lang.NoSuchMethodError: main 出现这个异常是因为你在抄书上的代码时抄错了。主函数一定要这么写:public static void main(String args[]) 一个字都不能错,切记!!! applet常出现的错误 IE显示applet已经启动,但是还是只显示灰色的一块。这种问题在使用jBuilder等集成开发工具是最容易出现,用appletviewer就没有问题。这是因为你在applet中使用了IE不支持的java版本。jBuilder在做applet是默认使用了swing组件,但是IE只支持jdk1.1,所以造成了这种情况。只要把导入swing的语句去掉就行了,然后按照提示修改一下代码,不要用swing组件的方法。如果你觉得swing组件很漂亮,打死都要用,那么就装一个java的plug-in这个东西在你装jdk的高版本时就自动装上了。看看你的控制面版中有没有那个红鼻子的小东西。但是切记,如果你要用它,那么你的html的文件的写法就和从前不一样了,不能简单的用CODE来指明类了。至于怎么写,不在这篇文章的讨论范围内了(你写一个hello world还要用plug-in就搞大了)。网上有很多文章讲怎么写。 用惯了点击就执行的的exe文件自然就很不习惯打开dos窗口输入命令行,你可以把它做成jar文件,但是对hello world来说有点麻烦,有个简单的傻办法:自己做一个批处理文件。例如:用记事本写一个run.txt文件,内容是:java 你的主文件名 ,然后把后缀改成bat存到和主文件相同的目录下。呵呵,双击就运行了,够傻吧。 如果你非要用exe文件运行,jet等工具可以把class文件做成exe文件。但是这样也失去了java的跨平台性。 以上就是hello world的全攻略了,如果你还看不到hello world,我倒!你还是别学java了。
E. 如何编译java程序
三种方法:
1.在IDE中,如eclipse中写的Java程序,在点击保存后eclipse就会调用javac编译程序编译,编译文件在当前项目的bin目录下。
2.作为一个独立的文件且没有定义Java环境变量,需要在cmd窗口中切换到java bin目录下执行Javac程序,执行格式为javac 空格 Java源文件;如 javac C://hello.java;
3.作为一个独立的文件且定义了Java环境变量,打开cmd窗口,可以在任意目录输入javac java源文件,如javac D://hi.java。
Java也是一种高级语言,要让计算机执行你撰写的Java程序,也得通过编译程序的编译。但是Java编译程序并不直接将Java源代码编译为相依于计算机平台的0、1序列,而是将其编译为字节码。
Java源代码的扩展名为.java,经过编译程序编译之后生成扩展名为.class的字节码。
F. 编译原理
C语言编译过程详解
C语言的编译链接过程是要把我们编写的一个C程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程。过程图解如下:
从图上可以看到,整个代码的编译过程分为编译和链接两个过程,编译对应图中的大括号括起的部分,其余则为链接过程。
一、编译过程
编译过程又可以分成两个阶段:编译和汇编。
1、编译
编译是读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,源文件的编译过程包含两个主要阶段:
第一个阶段是预处理阶段,在正式的编译阶段之前进行。预处理阶段将根据已放置在文件中的预处理指令来修改源文件的内容。如#include指令就是一个预处理指令,它把头文件的内容添加到.cpp文件中。这个在编译之前修改源文件的方式提供了很大的灵活性,以适应不同的计算机和操作系统环境的限制。一个环境需要的代码跟另一个环境所需的代码可能有所不同,因为可用的硬件或操作系统是不同的。在许多情况下,可以把用于不同环境的代码放在同一个文件中,再在预处理阶段修改代码,使之适应当前的环境。
主要是以下几方面的处理:
(1)宏定义指令,如 #define a b。
对于这种伪指令,预编译所要做的是将程序中的所有a用b替换,但作为字符串常量的 a则不被替换。还有 #undef,则将取消对某个宏的定义,使以后该串的出现不再被替换。
(2)条件编译指令,如#ifdef,#ifndef,#else,#elif,#endif等。
这些伪指令的引入使得程序员可以通过定义不同的宏来决定编译程序对哪些代码进行处理。预编译程序将根据有关的文件,将那些不必要的代码过滤掉
(3) 头文件包含指令,如#include "FileName"或者#include <FileName>等。
在头文件中一般用伪指令#define定义了大量的宏(最常见的是字符常量),同时包含有各种外部符号的声明。采用头文件的目的主要是为了使某些定义可以供多个不同的C源程序使用。因为在需要用到这些定义的C源程序中,只需加上一条#include语句即可,而不必再在此文件中将这些定义重复一遍。预编译程序将把头文件中的定义统统都加入到它所产生的输出文件中,以供编译程序对之进行处理。包含到C源程序中的头文件可以是系统提供的,这些头文件一般被放在/usr/include目录下。在程序中#include它们要使用尖括号(<>)。另外开发人员也可以定义自己的头文件,这些文件一般与C源程序放在同一目录下,此时在#include中要用双引号("")。
(4)特殊符号,预编译程序可以识别一些特殊的符号。
例如在源程序中出现的LINE标识将被解释为当前行号(十进制数),FILE则被解释为当前被编译的C源程序的名称。预编译程序对于在源程序中出现的这些串将用合适的值进行替换。
预编译程序所完成的基本上是对源程序的“替代”工作。经过此种替代,生成一个没有宏定义、没有条件编译指令、没有特殊符号的输出文件。这个文件的含义同没有经过预处理的源文件是相同的,但内容有所不同。下一步,此输出文件将作为编译程序的输出而被翻译成为机器指令。
第二个阶段编译、优化阶段。经过预编译得到的输出文件中,只有常量;如数字、字符串、变量的定义,以及C语言的关键字,如main,if,else,for,while,{,}, +,-,*,\等等。
编译程序所要作得工作就是通过词法分析和语法分析,在确认所有的指令都符合语法规则之后,将其翻译成等价的中间代码表示或汇编代码。
优化处理是编译系统中一项比较艰深的技术。它涉及到的问题不仅同编译技术本身有关,而且同机器的硬件环境也有很大的关系。优化一部分是对中间代码的优化。这种优化不依赖于具体的计算机。另一种优化则主要针对目标代码的生成而进行的。
对于前一种优化,主要的工作是删除公共表达式、循环优化(代码外提、强度削弱、变换循环控制条件、已知量的合并等)、复写传播,以及无用赋值的删除,等等。
后一种类型的优化同机器的硬件结构密切相关,最主要的是考虑是如何充分利用机器的各个硬件寄存器存放的有关变量的值,以减少对于内存的访问次数。另外,如何根据机器硬件执行指令的特点(如流水线、RISC、CISC、VLIW等)而对指令进行一些调整使目标代码比较短,执行的效率比较高,也是一个重要的研究课题。
2、汇编
汇编实际上指把汇编语言代码翻译成目标机器指令的过程。对于被翻译系统处理的每一个C语言源程序,都将最终经过这一处理而得到相应的目标文件。目标文件中所存放的也就是与源程序等效的目标的机器语言代码。目标文件由段组成。通常一个目标文件中至少有两个段:
代码段:该段中所包含的主要是程序的指令。该段一般是可读和可执行的,但一般却不可写。
数据段:主要存放程序中要用到的各种全局变量或静态的数据。一般数据段都是可读,可写,可执行的。
UNIX环境下主要有三种类型的目标文件:
(1)可重定位文件
其中包含有适合于其它目标文件链接来创建一个可执行的或者共享的目标文件的代码和数据。
(2)共享的目标文件
这种文件存放了适合于在两种上下文里链接的代码和数据。
第一种是链接程序可把它与其它可重定位文件及共享的目标文件一起处理来创建另一个 目标文件;
第二种是动态链接程序将它与另一个可执行文件及其它的共享目标文件结合到一起,创建一个进程映象。
(3)可执行文件
它包含了一个可以被操作系统创建一个进程来执行之的文件。汇编程序生成的实际上是第一种类型的目标文件。对于后两种还需要其他的一些处理方能得到,这个就是链接程序的工作了。
二、链接过程
由汇编程序生成的目标文件并不能立即就被执行,其中可能还有许多没有解决的问题。
例如,某个源文件中的函数可能引用了另一个源文件中定义的某个符号(如变量或者函数调用等);在程序中可能调用了某个库文件中的函数,等等。所有的这些问题,都需要经链接程序的处理方能得以解决。
链接程序的主要工作就是将有关的目标文件彼此相连接,也即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够被操作系统装入执行的统一整体。
根据开发人员指定的同库函数的链接方式的不同,链接处理可分为两种:
(1)静态链接
在这种链接方式下,函数的代码将从其所在地静态链接库中被拷贝到最终的可执行程序中。这样该程序在被执行时这些代码将被装入到该进程的虚拟地址空间中。静态链接库实际上是一个目标文件的集合,其中的每个文件含有库中的一个或者一组相关函数的代码。
(2) 动态链接
在此种方式下,函数的代码被放到称作是动态链接库或共享对象的某个目标文件中。链接程序此时所作的只是在最终的可执行程序中记录下共享对象的名字以及其它少量的登记信息。在此可执行文件被执行时,动态链接库的全部内容将被映射到运行时相应进程的虚地址空间。动态链接程序将根据可执行程序中记录的信息找到相应的函数代码。
对于可执行文件中的函数调用,可分别采用动态链接或静态链接的方法。使用动态链接能够使最终的可执行文件比较短小,并且当共享对象被多个进程使用时能节约一些内存,因为在内存中只需要保存一份此共享对象的代码。但并不是使用动态链接就一定比使用静态链接要优越。在某些情况下动态链接可能带来一些性能上损害。
我们在linux使用的gcc编译器便是把以上的几个过程进行捆绑,使用户只使用一次命令就把编译工作完成,这的确方便了编译工作,但对于初学者了解编译过程就很不利了,下图便是gcc代理的编译过程:
从上图可以看到:
预编译
将.c 文件转化成 .i文件
使用的gcc命令是:gcc –E
对应于预处理命令cpp
编译
将.c/.h文件转换成.s文件
使用的gcc命令是:gcc –S
对应于编译命令 cc –S
汇编
将.s 文件转化成 .o文件
使用的gcc 命令是:gcc –c
对应于汇编命令是 as
链接
将.o文件转化成可执行程序
使用的gcc 命令是: gcc
对应于链接命令是 ld
总结起来编译过程就上面的四个过程:预编译、编译、汇编、链接。了解这四个过程中所做的工作,对我们理解头文件、库等的工作过程是有帮助的,而且清楚的了解编译链接过程还对我们在编程时定位错误,以及编程时尽量调动编译器的检测错误会有很大的帮助的。
是否可以解决您的问题?
G. 请问linux下,gcc编译程序的过程(从读取源文件到制作可执行程序中间所有过程,越详细越好)
gcc -S *.c 预处理+反汇编
H. 求助c++高手,帮我编译一个教学程序
是要用c++吗?你后面说的数据驱动是什么意思?要用数据库吗?你想题问的是主观题还是客观题?最好举例以便符合你的意愿,请发我邮箱:[email protected]
I. 怎么在DOS下编译C++程序
对于初学c/c++的人,我建议最好在使用dos 环境下的编译器,这样不至于在GUI的环境(比如vc、bcb)里给弄糊涂了。那么在dos环境下如何使用c/c++的编译器了,其实很简单,下面用vc为例;
首先你告诉LIB和INCLUDE在什么地方,在就告诉编译的程序在什么地方,这样我们可以在任何目录下都可以使用编译器,要作到上面的,就理所当然要设定path了!设定如下:
假定你的vc安装在如下目录:
C:\Program Files\Microsoft Visual Studio\VC98\Include
C:\Program Files\Microsoft Visual Studio\VC98\MFC\Include
C:\Program Files\Microsoft Visual Studio\VC98\Lib
C:\Program Files\Microsoft Visual Studio\VC98\MFC\Lib
C:\Program Files\Microsoft Visual Studio\VC98\Bin
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin
那么写一个批处理文件(autoexec.bat),内容如下:
set path=C:\Program Files\Microsoft Visual Studio\VC98\Bin;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin (找到vc的编译器cl.exe位置,同时也可以调用MSPDB60.DLL文件)
set Include=C:\Program Files\Microsoft Visual Studio\VC98\Include;C:\Program Files\Microsoft Visual Studio\VC98\MFC\Include
set Lib=C:\Program Files\Microsoft Visual Studio\VC98\Lib;
C:\Program Files\Microsoft Visual Studio\VC98\MFC\Lib
当然如果你不用mfc也可以这样:
set path=C:\Program Files\Microsoft Visual Studio\VC98\Bin;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin
set Include=C:\Program Files\Microsoft Visual Studio\VC98\Include
set Lib=C:\Program Files\Microsoft Visual Studio\VC98\Lib
如果你是使用的bcb的编译器,设置方法与上面类似!
那么如何在dos 用c/c++的编译器编译程序呢?
那就更简单了!如下:
C:\> CL test.cpp <回车>(呵呵,当然你可以在其他目录下去执行,只要是你编译的cpp文件的目录就行)
至于执行cl.exe有些什么参数实现条件编译,就要自己去查了!:)
当然,上面的方法不适合开发大型的项目,因为很明显文档、程序管理不方便!
J. 怎么编译运行JAVA程序
先安装JDK,然后配置环境变量!
我的电脑(右击)→属性→高级→环境变量
在系统变量中找到PATH,然后把JDK的安装路径写上去,假如你的路径是C:\Sun\jdk
那么你就在PATH中添加下面的路径:
C:\Sun\jdk\bin;
(注:后面的分号不能少)
然后在系统变量中找到CLASSPATH如果没有就自己新建一个!
把下面这个路径写进CLASSPATH里去:
.;C:\Sun\jdk\lib\dt.jar;C:\Sun\jdk\lib\tools.jar;
测试的时候在C盘根目录下建一个HelloWorld.java的文件,然后在CMD中,在C盘的根目录下输入
javac HelloWorld.java
如果程序没错的话,再输入
java HelloWorld
这样就会输出结果了!