2010-01-25 96 views
5

有沒有像.dll或.so,但跨平臺?是否有像.dll或.so這樣的東西,但跨平臺?

+1

我不是說二進制兼容性 – SomeUser 2010-01-25 22:45:35

+0

好吧,DLL和SO的剛性本質(二進制兼容性)是導致它們具有強大的語義和很大的弱點的原因。你究竟想問什麼? – 2010-01-25 22:50:29

+0

我的意思是:爲每個平臺編寫程序和每個dll編譯器 – SomeUser 2010-01-25 23:00:20

回答

2

你不清楚你在問什麼,但是如果你問「如何以跨平臺的方式製作動態加載的C/C++庫」,那麼答案是GNU Libtool。它支持構建和使用它們,以及運行時支持功能

4

不適用於c/C++ AFAIK,java具有類似於.jar的文件。

8

Java .class文件和.jar壓縮文件將滿足這一要求,在.mon程序集下運行。

+1

他們並沒有真正滿足多種原因的要求 - 他不問是否有語言的編譯單元是體系結構和供應商獨立:/你不應該在沒有免責聲明的情況下陳述如此大膽的總數。 – 2010-01-25 22:45:30

+0

這個問題說「有什麼東西像......」。我認爲上面的「要求」很適合。我不是在談論上面的語言。我在談論平臺(JVM或.Net) – 2010-01-25 23:02:14

6

通用可執行格式?這是虛擬機(java)或IL(.Net)存在的全部原因 - 因此可以將相同的源代碼編譯爲通用中間語言,然後可以由框架在底層系統字節碼,程序員不必知道系統之間的差異。

實際上,虛擬機必須在所有平臺上始終如一地實施。

1

正如其他人所說的,並不是真的。也許LLVM有一天會填補這個空白,讓我們可以看到LLVM的等價物,因爲我們做靜態/動態對象庫。

請看this reply,這是爲什麼靜態對象庫通常不可移植的一些原因。我通常會說,因爲有時候 - 如果操作系統供應商保持足夠的話 - 有可能 - 比如freebsd執行linux二進制文件,或WINE執行大部分win32運行時。

0

二進制對象文件幾乎總是綁定到特定的平臺。正如其他人已經說過的,最接近平臺獨立性的目標文件格式可能是.NET/Mono程序集和Java字節碼。

也就是說,如果你想要真實平臺獨立性,你可能最好的源代碼(如果這是一個選項)。我知道這不是你想問的,但考慮到如今你可以在大多數機器上編譯C++程序(例如使用GNU編譯器集合),如果你的C++代碼本身是平臺不可知的。

相關問題