❶ 我要給不同的系統開發同一軟體,為什麼不能把代碼用各個系統廠商的開發環境直接分別編譯,
人家哪有時間給你重新編譯,他哪會有環境。
再說,說不定人家還會有新電腦。
❷ 相同的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,然後開始自動配置。