1. java语言是如何做到可移植性强、跨平台、“一次编译到处运行”的呢
因为java代码是运行在JVM上的,不同的平台有不同的JVM,如Windows和Mac上的运行同一款游戏,他们的实现方式肯定不一样,但你都能读取游戏的存档文件。你不需要知道JVM在不同平台的实现方式,但他们解析java的class文件是一样的逻辑,就是这样java实现跨平台的。
2. 用visual c 编出的程序如何在别的电脑上运行
使用visual c是微软公司退出的c/c++语言编译软件,因此它所编译出来的程序是微软的exe运行格式。这种格式不能再除了windows以外的任何平台运行。当然,其他操作系统可以通过运行虚拟机来支持这种软件。
一般情况下,windows开发的软件只能在windows上运行。这是因为windows内置大量专用api,这些api在其他的操作系统上不存在,因此不能运行。
但是,对于没有使用windows api的代码可以通过在其他操作系统上的编译软件来运行。比如linux上的gcc编译器,就能实现编译。
下面是具体操作过程:
以着名的hello world程序为例,在linux的终端页面输入gcc -c hello.c(hello.c是你的代码文件,当然目录需要对),接着会生成hello.o的一个文件,接下来在终端输入gcc -0 hello hello.o即可编译成可执行文件。
同样,以上编译的软件只能在linux平台运行,需要跨平台的软件是需要多个语言的。企图一份代码通吃全平台是不现实的。
另附,在其他操作系统上的编译软件和语言
名称 系统 语言
gcc linux c类
dev c++ windows c/c++
vs windows 几乎所有语言
vc windows c/c++
free pascal windows/linux pascal
laser linux/windows pascal
delphi windows/linux pascal
xcode mac os object c/swift
等
3. 怎么把同一个代码编译成不同操作系统下可运行的程序
汇编不行的。Windows下面的汇编是intel风格的,而linux的汇编是AT&T风格的,不一样。实际上,汇编的移植性是非常差的。
这个和编译器有关,而且还和你的代码的编写语言有关。一般来说,C语言移植性较好。Windows上运行的程序一般都会调用windows下的API、DLL等,所以推荐选择Windows下的编译器,比如说visual studio,turbo c等。linux下面也是这样的啊,你用gcc编译吧。
32位和64位。gcc有个-m64选项,用了这个选项就可以编出64位的程序。当然你还需要64位的系统库。Windows下面也有相应的64位程序编译器。
在这里要说明的是:如果本机是32位的,那么编译32位程序叫本机编译,如果用32位机器编译64位程序或者用64位机器编译32位程序,那么很明显编译好的程序不能在本机运行(最多是兼容运行),这种编译方式叫做交叉编译。
兄弟,建议你多看看编译器、交叉编译方面的材料。相信会有很大帮助的。
4. 同样的汇编器,在不同的操作系统上可以运行吗同样的高级语言编译器,可以在不同的操作系统上运行吗
1.如果汇编器本身就可以自己进行引导启动、文件管理器了。不需要操作系统也可以。
2.“同样的汇编器”?如果指同一个可执行文件,不可以。
编程语言不受操作系统的限制。都可以编译成对应操作系统的程序。
但对应平台的程序不可以在其他平台上运行。
5. 用java编写的程序,可以在各种平台上运行的扩展名是什么
一个一个按你的步骤给你说:
1,java可以编写成.exe,虽然是exe文件,但是不代表是windows可执行文件,尽管扩展名一样
2,可以打包成jar,需要有jdk支持,通过JVM运行,这个才是java真正的运行包。
3,.java是java程序的源代码文件
4,.class不是类的扩展名,JVM并不能直接运行java源文件,需要通过javac将java源文件编译成字节码文件,也就是.class文件,JVM在运行某个类的时候,通过加载指定该.class文件就可以,因为class文件名与类名相同,但是不能理解他俩是一回事,运行的是类,不是文件。
jar转换成exe的过程其实是没有必要的,因为要运行java程序必须有JVM,它所转换的exe和C++写出来程序的exe有区别的。不是同一个扩展名文件里面东西就一样。好比cmd里是可执行文件,但是C#编写出来的exe是微软中间码。