① 如何使用GNU GCC編譯MQX應用
1. 安裝MQX4.0,在飛思卡爾官網把MQX的安裝文件下載下來。
2. 安裝好之後會在安裝目錄下生成如下圖所示的子目錄。
build目錄:包含了飛思卡爾不同平台不同編譯器的相關庫的Makefile文件。具體內容如下列表示意圖所示:
build
+---common
| +---make ... shared Makefiles with global settings, variables and paths
+--- ... board-specific folder
| +---make ... folder contains mass-build Makefile for all libraries
| +---tools ... tool-specific global settings, variables and paths
| +---bsp ... BSP Library Makefile
| +---psp ... PSP Library Makefile
| +---mfs ... MFS Library Makefile
| +---rtcs ... RTCS Library Makefile
| +---shell ... Shell Library Makefile
| +---usbd ... USB Device Library Makefile
| +---usbh ... USB Host Library Makefile
+---
+---make
3. 安裝CodeWarrior Development Studio V10.5編譯器。在飛思卡爾官網把CW10.5的安裝文件下載下來。安裝CW10.5時,請注意安裝目錄名稱不要帶空格。
CW10.5的Cross_Tools目錄已經自帶了GNU GCC for ARM Cortex-M4內核的交叉編譯工具鏈。
4. 安裝MinGW(Minimalist GNU on Windows) GNU工具集,在Windows下GNU GCC需要使用make.exe和sed.exe等工具。
5. 上述軟體安裝完畢後,按照實際安裝情況,修改編譯MQX所需的交叉工具鏈的目錄。
1).修改全局宏定義腳本$MQX_DIR\build\common\make\global.mak
指定GNU 交叉工具鏈的安裝路徑TOOLCHAIN_ROOTDIR宏定義,如:
TOOLCHAIN_ROOTDIR = C:/Freescale/CW10_5
2).指定編譯某一硬體平台需要GNU GCC編譯器的具體安裝路徑。如需要編譯twrk60d00m這款Demo板,修改腳本文件$MQX\build\twrk60d100m\make\tools\cw10gcc.mak,指定AS,CC,CX,AR,LD等工具的可執行文件。
#------------------------------------------------------------
# toolchain settings
#------------------------------------------------------------
AS = $(TOOLCHAIN_ROOTDIR)/Cross_Tools/arm-none-eabi-gcc-4_7_3/bin/arm-none-eabi-gcc.exe
CC = $(TOOLCHAIN_ROOTDIR)/Cross_Tools/arm-none-eabi-gcc-4_7_3/bin/arm-none-eabi-gcc.exe
CX = $(TOOLCHAIN_ROOTDIR)/Cross_Tools/arm-none-eabi-gcc-4_7_3/bin/arm-none-eabi-gcc.exe
AR = $(TOOLCHAIN_ROOTDIR)/Cross_Tools/arm-none-eabi-gcc-4_7_3/bin/arm-none-eabi-ar.exe
LD = $(TOOLCHAIN_ROOTDIR)/Cross_Tools/arm-none-eabi-gcc-4_7_3/bin/arm-none-eabi-gcc.exe
6. 修改完畢上述腳本後,就可以開始使用GNU GCC編譯MQX。在windows命令窗口下進入需要編譯的目錄,如Tower K60的編譯目錄:$MQX\build\twrk60d100m\make。在命令行下輸入make指令:
C:\Freescale\Freescale_MQX_4_0\build\twrk60d100m\make>mingw32-make build TOOL=cw10gcc CONFIG=debug
這條make指令能夠將整個MQX進行編譯,並生成bsp.a,psp.a,shell.a,rtcs.a,usbd.a,usbh.a等庫文件。
7. MQX系統庫編譯完畢後,可以進行應用程序的編譯。在命令窗口進入需要編譯的應用程序目錄。如需要編譯hello常式代碼,進入$MQX\mqx\examples\hello\make目錄,在命令下輸入make命令:
C:\Freescale\Freescale_MQX_4_0\mqx\examples\hello\make>mingw32-make BOARD=twrk60d100m TOOL=cw10gcc CONFIG=debug LOAD=intflash build
GNU GCC將會編譯應用程序代碼,並與MQX的bsp.a,psp.a的庫文件鏈接,生成.elf格式的可以執行文件。
8. 下載調試.elf可執行文件。在CW10.5中New創建一個Bareboard Project工程,選擇需要使用的下載調試器,並且選定使用GNU GCC作為編譯器。在菜單Properties --> Run/Debug Setting中選擇需要下載的目標文件。然後通過菜單Run-->Debug下載調試程序。
② eclipse或netbeans里的make target是干什麼用的
使用Eclipse開發C++的基本配置
1、安裝MinGW(Minimalist GNU for Windows),專門為Windows平台定製的GCC開發模擬平台
官方地址:http://www.mingw.org/
當前使用版本:MinGW-5.1.4
下載後的安裝文件,如圖所示:
最後得到運行結果:Hello Eclipse world for C++
③ 我用QT進行編程,但是make命令和mingw32-make命令和nmake命令都不是內部指令,是什麼回事呢
添加3個環境變數即可,依次如下:
1)QTDIR用戶變數(假設你的Qt安裝在D盤)
在Administration的用戶變數中,新建一個變數「QTDIR」,路徑是「;D:Qt2010.05qt;」
我估計你的問題主要是在:mingw32-make.exe的路徑沒有配置,即為path系統變數添加
「;D:Qt2010.05mingwin;」
④ 請問各位編程高手如何用MinGW編譯Makefile
http://www.MinGW.org
下載mingw-make.exe把它放MinGW\bin下面,同時改名成make.exe
問題不在make.exe,在你自己。
⑤ cmake:讓mingw(gcc)生成MSVC可用的dll(.lib)----mark親測有效
minggw(gcc)編譯出來的動態庫(DLL),默認是沒有MSVC連接動態庫所需要的lib文件的。
關於MSVC的DLL和LIB的作用和區別,請參考這篇博文,講得很透徹了–>《DLL和LIB的區別》
那麼如果VC要鏈接gcc生成的DLL,卻沒有lib文件怎麼辦?
對於這個問題網上都有解決的辦法,這篇文章講到一些辦法,可供收藏《VC6 調用GCC的DLL》,對於沒有提供lib的DLL都可以用這篇文章提供的辦法試試。
如果項目中不同的模塊用不同的編譯器編譯,這時如果gcc編譯的DLL沒有import library(lib文件),可以通過cmake設置選項來解決。
CMAKE有一個GNUtoMS參數就是解決這個問題的。
GNUtoMS
Convert GNU import library (.dll.a) to MS format (.lib).
When linking a shared library or executable that exports symbols using GNU tools on Windows (MinGW/MSYS) with Visual Studio installed convert the import library (.dll.a) from GNU to MS format (.lib). Both import libraries will be installed by install(TARGETS) and exported by install(EXPORT) and export() to be linked by applications with either GNU- or MS-compatible tools.
CMAKE_GNUtoMS
Convert GNU import libraries (.dll.a) to MS format (.lib).
This variable is used to initialize the GNUtoMS property on targets when they are created. See that target property for additional information.(這個變數用來初始化GNUtoMS屬性)
在用cmake生成Makefile時,設置GNUtoMS就可以解決這個問題。有兩種途徑:
shell命令行方式
如下在命令行中-D定義一個為bool類型的CMAKE_GNUtoMS參數為ON,就指示在編譯時對dll生成.lib的import library
cmake %source_folder% -G 「Eclipse CDT4 - MinGW Makefiles」 -DCMAKE_GNUtoMS:BOOL=ON
cmak-gui
如下在cmake-gui界面中將CMAKE_GNUtoMS選項勾選,再點<generate>按鈕生成Makefile
這里寫圖片描述
然後執行make編譯項目的過程中,生成dll時會輸出(前提是你安裝了VC編譯器)
Setting environment for using Microsoft Visual Studio 2010 x64 tools.
Microsoft (R) Library Manager Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
正在創建庫 libturbojpeg.lib 和對象 libturbojpeg.exp
編譯完成後,你就會發現所有的dll都有對應的lib文件了。
link: http://www.voidcn.com/article/p-tlmilzjf-ca.html