將之前在 Windows 8 系統中寫的一些小程式(包含執行檔) copy 到別的目錄,赫然發現在 Windows 8 所編譯出來的 hello.exe 檔案竟然有 6.4 MB 那麼大,比對之前在 Windows 7 以前的檔案,icuTest.exe 只有 50K, locale.exe 只有 1.1 MB。於是在不同的系統測試,以 hello.cpp 測試結果如下:
1. FreeBSB :7.3 K
2. MinGW32 on Windows XP:9.34 K
3. Visual Studio on Windows 8:68 K
4. Clang on Windows XP: 5.36 K
另外,拿 boost 程式測試 boost library 測試產生 Binary 檔的結果:
1. FreeBSB :未測試
2. MinGW32 on Windows XP:1.08 MB
3. Visual Studio on Windows 8:未測試
4. Clang on Windows XP: 471 KB ,但是在 XP 仍然不能 work
這樣的差別太大,使用 gcc -s 的參數,將 gcc 所編譯出來的執行檔,不含所有的 symbol table,測試結果如下:
1. FreeBSB :5 K
2. MinGW32 on Windows XP:4.68 K
3. MinGW64 on Windows 8:671 K
結論是:在 Windows 系統中要加入 -s 選項。
在 CodeBlocks 中有一個相同的選項,在 Settings -> Compiler 中,要記得將 Strip all symbols from binary(minimize size [-s] 這個項目選取,產生的 Binary 檔才不會太大。
順帶一提,使用 Visual Studio for Desktop 測試 hello.cpp 程式,利用 win32 的 template 時,會 include "stdafx.h" 這個 header,而 include <iostream> 必須在它之後 include 進來,否則找不到 <iostream> 這個 header。對於 VS 確實很陌生,不過,一般的 C++ 的書本,對於介紹 Hello World 這個初學者的第一支程式,通常沒有 include "stdafx.h" 才是。使用 cl 當然可以不需要這個 header,但是,在 VS 中就需要它,才能 include <iostream> 似乎與眾不同。
在 Virtual Box 的 Windows XP 測試 rubenvb 所編譯的 clang+llvm 套件,在真正 Win32 的系統中,是否可以使用 clang compiler + boost library 的程式,產出的執行檔正常的 work ? 結果還是不能 work 。
在設定 boost 的 Global Variable 時,要特別注意,boost 的 header 是放在根目錄之下,沒有 include 目錄,所以在 CodeBlocks 的 Global Variable 設定中, 沒有設定 include 的目錄,使用 base 所設定的目錄,因此, Search directory 的 compile tab的設定是 $(#boost),而不是舊版的 $(#boost.include)。
1. FreeBSB :7.3 K
2. MinGW32 on Windows XP:9.34 K
3. Visual Studio on Windows 8:68 K
4. Clang on Windows XP: 5.36 K
另外,拿 boost 程式測試 boost library 測試產生 Binary 檔的結果:
1. FreeBSB :未測試
2. MinGW32 on Windows XP:1.08 MB
3. Visual Studio on Windows 8:未測試
4. Clang on Windows XP: 471 KB ,但是在 XP 仍然不能 work
這樣的差別太大,使用 gcc -s 的參數,將 gcc 所編譯出來的執行檔,不含所有的 symbol table,測試結果如下:
1. FreeBSB :5 K
2. MinGW32 on Windows XP:4.68 K
3. MinGW64 on Windows 8:671 K
結論是:在 Windows 系統中要加入 -s 選項。
在 CodeBlocks 中有一個相同的選項,在 Settings -> Compiler 中,要記得將 Strip all symbols from binary(minimize size [-s] 這個項目選取,產生的 Binary 檔才不會太大。
順帶一提,使用 Visual Studio for Desktop 測試 hello.cpp 程式,利用 win32 的 template 時,會 include "stdafx.h" 這個 header,而 include <iostream> 必須在它之後 include 進來,否則找不到 <iostream> 這個 header。對於 VS 確實很陌生,不過,一般的 C++ 的書本,對於介紹 Hello World 這個初學者的第一支程式,通常沒有 include "stdafx.h" 才是。使用 cl 當然可以不需要這個 header,但是,在 VS 中就需要它,才能 include <iostream> 似乎與眾不同。
在 Virtual Box 的 Windows XP 測試 rubenvb 所編譯的 clang+llvm 套件,在真正 Win32 的系統中,是否可以使用 clang compiler + boost library 的程式,產出的執行檔正常的 work ? 結果還是不能 work 。
在設定 boost 的 Global Variable 時,要特別注意,boost 的 header 是放在根目錄之下,沒有 include 目錄,所以在 CodeBlocks 的 Global Variable 設定中, 沒有設定 include 的目錄,使用 base 所設定的目錄,因此, Search directory 的 compile tab的設定是 $(#boost),而不是舊版的 $(#boost.include)。
留言
張貼留言