簡體   English   中英

C ++-如何使用MinGW獨立編譯的程序?

[英]C++ - How to make a program compiled with MinGW standalone?

我正在做一個很小的項目(適用於Windows),應該是可移植的。 我在某個地方看到MinGW擺脫了目標系統上某些.dll的要求,因此我想嘗試一下。 令我驚訝的是,當我嘗試在朋友的計算機上運行程序時,出現兩個錯誤,提示缺少兩個不同的.dll。 我以為MinGW使用了系統dll,但顯然不起作用。 我看到了一篇有關如何使用Visual Studio制作獨立exe的文章,但由於其簡單性,我更喜歡使用MinGW。

所以我的問題是:如何用MinGW制作獨立的exe?

注意:我僅使用標准庫,但是很高興知道如何為將來的項目包括其他庫。

如果您想要一個獨立exe的示例,那么膩子就是一個很好的示例(它是Windows的ssh客戶端)。

您需要的兩個庫很可能是libgcc_s_sjlj-1.dlllibstdc++-6.dll或它們的一些變體,具體取決於構建時mingw的配置方式。 這些是C和C ++標准庫的實現。

如果需要,可以在鏈接最終的可執行文件-static-libgcc-static-libstdc++時將額外的標志傳遞給編譯器,這將導致它以靜態方式鏈接這些庫,而不要求您使用它們來分發DLL。您的可執行文件。

這里的更多信息: Mingw libgcc_s_sjlj-1.dll丟失

通常,您總是可以嘗試將庫靜態鏈接到可執行文件中。 這些特殊的-static-libgcc標志是僅mingw提供的特殊標志,而不是其他編譯器提供的特殊標志,並且不適用於其他庫,對於其他庫,您可以使用不同的-static語法。 靜態鏈接很好,但是隨着依賴關系變得越來越復雜,它會變得更加復雜且容易出錯。 靜態鏈接具有一些與庫鏈接順序相關的陷阱。 經過某一點之后,通常通常更容易使它們全部共享並且不執行任何靜態鏈接。 這取決於您,這取決於項目的復雜程度/是否開始遇到問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM