❶ 我要给不同的系统开发同一软件,为什么不能把代码用各个系统厂商的开发环境直接分别编译,
人家哪有时间给你重新编译,他哪会有环境。
再说,说不定人家还会有新电脑。
❷ 相同的c语言代码,在不同的编译器,不同的操作系统上面生成的指令是不是不同的
不同的CPU生成的指令不一样、不同的编译器C语言实现方式不一样、不同的操作系统API不一样。使用C语言只能做到源代码级别的跨平台和跨编译器。
❸ 相同的python代码可以在不同操作系统下运行吗
那要看你代码写的兼容不兼容了,
比如在linux中文件目录和windows中是不一样的,你如果把路径这些东西硬编码了,那可能就会有点小问题,稍微注意一下就行了,python是跨平台的
❹ 不同的操作系统如何编译一段软件的代码
首先,准备好命令行和编辑器。针对主流操作系统分别做简单的解释:Linux:已经具备了命令行和一个叫GCC 的编辑器。在命令行中输入gcc ,如果“command not found”,那么请安装GCC。Mac OS X:命令行是Terminal,位于Applications/Utilities。你需要下载XCode ,它包含Apple的编辑器。Windows:微软在免费下载的Visual Studio Express中提供了编辑器,但是Cygwin 界面更友好。安装中要注意的是:要选择“Devel”部分中所有的安装包。下载:基本上所有的源数据包都有.tgz或者.tar.gz的后缀,有文件名和版本号,比如example-3.2.8.tar.gz。建立一个名为“source”或者“build”的目录,下载并放在该目录中。解压缩:从命令行进入工作目录(用cd命令):cd source 最快的方法是:tar -xzvf example-3.2.8.tar.gz这会将所有的源代码解压到一个新的子目录中,而且文件名跟应用是一样的。进入目录只需要敲:cd example-3.2.8读文档:在代码的文件包中会有像README 和INSTALL之类的文件,一定要读。你也可以使用less 命令在命令行中读取:less INSTALL 或者直接用合适的格式打开它们,它们会告诉你要安装哪些包、安装指南、注意问题等。Building:虽然各有不同,但大抵方法如下:输入:./configure 运行配置工具会告诉你缺少哪些软件和重要的文件的位置。有时候你需要自己指明特定文件在你计算机上的位置,比如:./configure --ssl-dir=/usr/local/include Configuration 过程要用几分钟,当它完毕的时候,你就可以编译了。如果出现错误,参考下面的Troubleshooting。编译请输入:make一切顺利就开始编译了。编译会占用一段时间而且当运行时会占用你电脑的所有进程。不要担心,当编译结束的时候,如果你仍然没有看到已错误,那你已经搞定了。剩下要做的只是将不同的文件放到文件系统中:make installTroubleshooting: 如果以上的步骤有遇到错误,有方法让你知道问题所在。确认你是否严格地按要求执行以上步骤。【
❺ 为什么程序代码被编译成机器码就不能跨平台运行
首先机器码实际上就是一串的CPU的指令,比如说,把内存地址A的东西移到内存地址B,递增一下地址B的的东西。又或者说,把某个地址C的内容拷贝至某寄存器。所以实际上就是内容移动+少量的数值运算,全是基于内存进行的。
----------------------------------
那么之所以同一套机器码不能在不同的操作系统下运行的原因是:
不同的操作系统管理内存的方法不一样咯。计算机开机时,内存是空的,操作系统决定了如何摆放内存。比如操作系统A可能把自己的Runtime内核放在地址的前面XXXMB里。操作系统B可能愿意把自己的内核放在别的地方。就算哪怕不同的操作系统把内核放在同一个位置,内核里头的memory摆放也不一样的。
所以同一套内容移动的机器码,在不同的操作系统下自然产生了不同的效果。
❻ java的跨平台是不是指同一个源程序在windows电脑上运行就能得到一个适合windows电脑的
不是,Java的跨平台,是指“一次编译,到处运行”,是指Java源代码编译后的字节码(.class)文件可以在不同操作系统上运行(Windows, Linux, MAC等),而这些操作系统上需要有JRE(Java Runtime Enviorment)即虚拟机。
至于Android,只不过是借用了Java编程语言,是Google开发的另一个平台,它用的虚拟机和一般意义上的Java虚拟机JVM(Oracle /SUN的)不一样,叫Dalvik VM,它还需要把Java标准字节码文件(.class) 转换为Davik虚拟机代码(.dex)。apk安装包实际上就是压缩了dex文件的压缩包。
这个跨平台,不包括Android的,这主要是历史原因,Oracle还和Google打了场官司,你可以了解一下。Oracle对Java每推出一个新版本JDK,Google就要快速跟进,创造一些工具(ADT)让其能转化为Davik VM代码。
❼ .java文件编译成.class文件然后交给不同系统的虚拟机不同系统的虚拟机解释成不同的代码.那为
.java也是跨平台的,意思就是一份代码可以在不同平台编译,但虚拟机最终执行的是.class,我们通常说的跨平台主要是针对计算机执行这个层面。
❽ C语言编译后为什么可以在不同型号机器上运行
因为那是你运行程序的大部分机器都是基于Intel体系结构的。本身Intel系列的电脑都是向后兼容的,所以刚好程序可以在不同的机器上运行。
如果你换其他体系结构的机器,估计就不可以了。
❾ 高级语言编的程序可以在不同系统机器上用吗
首先 要理解什麽样的是高级语言
高级语言的运行机制
高级语言 都有自己的一套编译环境
将这些语言编译成 自己编译环境 可以解读的代码形式
然后 再解析为 系统所 识别的代码形式
也就是 系统级代码
高级语言的可移植性 是能移植 到 各种系统 而不是
直接解析为机器码 让cpu等硬件去执行
是 解析为系统级代码
如dos 的命令 一样 让系统识别 系统识别了 命令和代码 才会解析为 机器代码
高级语言的可移植性 是 可以 移植到别的系统
系统来解析语言让 其 可以在机器上运行
所以 高级语言的 都是 先将代码解析给 系统
再去做相应的处理
windos 的exe 文件 和linux 的 .bin 文件
同为2进制文件 但是 这些代码是给不同系统去识别的
系统能识别 才能运行 才能让硬件 支持
比如java 它有一套自己的运行环境 jvm 虚拟机
它现将 java 文件解析 为class 文件
然后将class 文件解析为 系统所对应的2进制格式的代码
然后交给系统 系统识别了 再交给 各个硬件去处理
所以 高级语言的可移植性 是基于平台的
没有平台 这些高级语言是没有办法 让 硬件 工作的
低级语言 如汇编就是 直接去通过编译器
编译成 各个 硬件所能支持 然后再运行的
不知道 这个答案 符合你的要求不
❿ 《一个操作系统的实现》里面代码的编译都是在linux下,想问可以在windows下编译吗
Win10最新版上有Bash on Windows。
使用方法是进设置,选择开发者模式,然后进打开关闭windows功能上有一个叫基于ubuntu的windows子系统,选它,然后重启,Win+R,输入bash,然后开始自动配置。