我有C程序,我在Windows上用mingw
進行編譯。它工作正常,但需要MSVCRT.DLL
。我想鏈接靜態(就像我可以在Visual Studio中做的那樣)。這可能嗎?我可以使用mingw靜態鏈接MSVCRT嗎?
我試過-static
標誌到gcc
,它沒有做任何改變。
對於使用標準C++庫的C++程序怎麼樣?
我有C程序,我在Windows上用mingw
進行編譯。它工作正常,但需要MSVCRT.DLL
。我想鏈接靜態(就像我可以在Visual Studio中做的那樣)。這可能嗎?我可以使用mingw靜態鏈接MSVCRT嗎?
我試過-static
標誌到gcc
,它沒有做任何改變。
對於使用標準C++庫的C++程序怎麼樣?
我相信MinGW由於版權原因不使用靜態運行時庫。
你也許可以嘗試使用newlib(http://sourceware.org/newlib/),以創建一個不鏈接到msvcrt.dll
+1版權迴避。這是它已經在每個Windows系統上的一個聰明的副作用。使用MinGW構建的程序需要它,但不必分發它。因此,沒有版權問題。 – RBerteig 2010-10-15 18:33:20
即使我沒有在代碼中使用任何std C函數,它需要MSVCRT我認爲對於在main之前/之後運行的CRT啓動/清除代碼。 newlib也提供這個功能嗎? – zaharpopov 2010-10-16 06:48:33
已經花了,而搜索對於我自己,我碰到this post介紹正在進行Mingw32備用C運行時間庫。但是,它尚未準備好使用,開發人員似乎已經放棄了它。 Home page link here。
在這裏發佈這個答案,希望它對未來某些時候用戶搜索引擎有用。
關於你的最後一個問題......如果你在談論STL,它只是標題。 – 2010-10-15 14:59:46
@Armen:但還沒有C++ MSVCPT的DLL或類似的東西? – zaharpopov 2010-10-15 15:12:22
請注意,MSVCRT.DLL作爲系統組件包含在幾乎每個Windows版本中,而您通常可能會遇到這種情況。特別是,您不需要將它與您的應用程序一起分發,因爲您的最終用戶已經擁有了它。那麼一個自然的問題是,爲什麼你需要避免與其動態鏈接呢? – RBerteig 2010-10-15 18:31:16