我編譯了使用wxHaskell庫的haskell程序,現在我想知道如何讓它在沒有安裝wxHaskell的其他機器上運行。當然,我可以看到錯誤,我可以複製寫在輸出中的dll,並將它們複製到該機器上,但是什麼是professioal sollution,我可以編寫任何安裝程序或類似的東西嗎?在其他機器上運行wxHaskell
感謝您的幫助
我編譯了使用wxHaskell庫的haskell程序,現在我想知道如何讓它在沒有安裝wxHaskell的其他機器上運行。當然,我可以看到錯誤,我可以複製寫在輸出中的dll,並將它們複製到該機器上,但是什麼是professioal sollution,我可以編寫任何安裝程序或類似的東西嗎?在其他機器上運行wxHaskell
感謝您的幫助
您將需要完全靜態鏈接您的可執行文件。如何做到這一點因系統而異,但通常包括將-static標誌傳遞給GHC,並將-optl-static傳遞給鏈接器。
如果您使用最近的cabalized wxHaskell實現,這很容易,因爲幾乎所有東西都是靜態鏈接的。
我使用InnoSetup,它是開源的,並且工作得很好。我的腳本至少需要以下內容:
AppName=My Wonderful Application
AppVerName=My Wonderful Application 0.1.13
CreateAppDir=yes
DefaultDirName={pf}\MyWonderfulApplication
[Files]
Source: "path\to\your\wxWidgets.dll"
Source: "path\to\msvcrt.dll"
Source: "path\to\your\application.exe"
除DefaultDirName之外的所有路徑都是開發計算機上的路徑。
關鍵項目是您的wxWidgets DLL(可能是多個DLL,具體取決於您如何構建wxWidgets-我推薦並使用單片選項,它會創建單個DLL wxmsw28u_gcc_custom.dll)和您的應用程序二進制文件。
如果您鏈接到任何其他庫,您也將需要它們。 Windows上的許多第三方庫需要msvcrt.dll,這就是我提到它的原因。