注意! 此處所列說明可能尚不完整。
編譯 Code::Blocks 和 emIDE 基本上都要參照 Installing Code::Blocks from source on Windows。
編譯
- 安裝 Code::Blocks 和 MinGW 工具鏈 (codeblocks-13.12mingw-setup.exe)。
- 下載並編譯 wxWidgets (wxMSW-2.8.12.zip)。
set path=C:\Program Files (x86)\CodeBlocks\MinGW\bin;C:\Program Files (x86)\CodeBlocks\MinGW\mingw32\bin cd wxMSW-2.8.12\build\msw # 修改 config.gcc 底下內容,避免因為目的檔過大導致鏈結失敗。 # # CFLAGS ?= -fno-keep-inline-dllexport # # CXXFLAGS ?= -fno-keep-inline-dllexport # mingw32-make -f makefile.gcc SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=1 clean mingw32-make -f makefile.gcc SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=1
- 注意! 編譯完後必須確認 wxMSW-2.8.12_build\lib\gcc_dll 目錄底下有函式庫存在。
- 下載 Code::Blocks 或是 emIDE 代碼。
- 用安裝好的 Code::Blocks 開啟 Code::Blocks 或 emIDE 代碼。
- Code::Blocks
- 拷貝 wxMSW-2.8.12\lib\gcc_dll\wxmsw28u_gcc_custom.dll 到 codeblocks-13.12\src\devel 目錄底下,和 codeblocks.exe 執行檔放在同一個目錄。
- emIDE
- libstdc++-6.dll
- 從 MinGW bin 目錄底下拷貝所需的函式庫到 emIDE.exe 所在目錄。
-static-libgcc
-static-libstdc++
-
–no-chrash-handler
用於產生除錯日誌。-
- 用於將命令行輸出存到文本,以供後續分析。
Code::Blocks
-
- Settings → Compiler → Build options → Number of processes for parallel builds
- 視平台上的處理器個數調整,可以有效加速。
- 可能不能和 ccache 混用,又整體效果是否有加成需要實驗觀察。目前來看,單獨使用平行編譯效果最顯著。
- 比較第一次 Build,和第二次 Rebuild 的時間。
-
- 預設使用 .cbp 檔 (XML 格式的設定檔) 控制編譯流程。
-
- 可以手寫 Makefile,或是透過 cbp2make 將 .cbp 檔轉換成 Makefile。
- 編譯相關代碼
- plugins\compilergcc\compilergcc.cpp
- 加速編譯
- Windows 平台上的做法請參考 Re: ccache to speed up builds
- 下載 ccache (ccache-win32 或 android ccache) 到 mingw32-gcc.exe 和 mingw32-g++.exe 所在目錄。
- 將下面兩個檔案 (適用於 ccache-win32) 放到 mingw32-gcc.exe 和 mingw32-g++.exe 所在目錄。
- ccache-gcc.bat
@echo off ccache.exe ""mingw32-gcc.exe %*"
- ccache-g++.bat
@echo off ccache.exe ""mingw32-g++.exe %*"
- 可以觀察到 C:\Users\{username}\AppData\Roaming\.ccache 目錄有所變化。
-
- GNU ld 輸出的訊息較沒有規則性,必須手工調整訊息過濾機制。
- Settinngs → Compiler → Global compiler settings → GNU GCC Compiler → Other settings → Advanced options → Output parsing
emIDE
- emIDE 衍生自 Code::Blocks
--------------------------- ------------------ | TCP/IP | | | | gdb <--------> OpenOCD | <---> J-Link <----> | debugee | | | USB JTAG | | | (Host PC) | | (Target Board) | --------------------------- ------------------
- STM32环境准备:JLink + OpenOCD
$ openocd -s ../share/openocd/scripts/ -f interface/jlink.cfg -f board/stm3210e_eval.cfg $ cat openocd.cfg source [find interface/jlink.cfg] source [find target/stm32f1x.cfg] $ openocd -f openocd.cfg $ telnet localhsot 4444
- Windows 環境下,原有 J-Link 驅動似乎不能被 OpenOCD 辨識 (8 Debug Adapter Configuration)。
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED Error: Cannot find jlink Interface! Please check connection and permissions.
- 如果原有驅動無法使用,可以透過 Zadig 安裝其它版本的 USB 驅動。