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是微軟中間碼。