使用自带的MSYS环境可以编译proxmark3,但是对于那简陋的界面实在看不过去,所以就有使用cygwin来代替的想法,刚开始看proxmark3的编译过程有点蒙,首先运行make help
另外写了一个启动脚本来设置cygwin的环境.
设置三个运行环境,一个是arm的编译环境,mingw的编译环境,qt的编译环境.
注意QTDIR的路径格式与PATH中的路径格式是不一样的,这个就是msys不够智能的原因了,msys只能认识windows的格式,如果改成cygwin格式,路径是不会被识别的,搞的比较麻烦.
不过由于我的pc有另外版本的arm-none-eabi-gcc编译器,用来编译pm3的时候出现错误,还是用原来的版本来编译吧.
查找armsrc下面的Makefile里面没有编译器的声明,找到common文件夹下面的Makefile.common里面将
CROSS ?= arm-none-eabi-
修改为
CROSS ?= /cygdrive/e/proxmark3/ProxSpace/devkitARM/bin/arm-none-eabi-
这样arm的程序就可以编译了.
在编译QT的时候出现错误 LDLIBS += -ldl 这个库找不到,
这个原因是qt编译的环境设置问题,编译过程中找的环境是CYGWIN (用uname可以查),在client/Makefile加入
这样就可以正常编译了.
还需要注意的是如果机器上面的CYGWIN已经装了gcc,也会跟环境设置的gcc冲突,所以需要修改client/Makefile下面的两行
CC=gcc
CXX=g++
因为我在cygwin上面没有装gcc,所以这一步就省了.
有许多的提示
Multi-OS Makefile, you are running on CYGWIN_NT-6.3-WOW
Possible targets:
+ all - Make bootrom, armsrc and the OS-specific host directory
+ client - Make only the OS-specific host directory
+ flash-bootrom - Make bootrom and flash it
+ flash-os - Make armsrc and flash os
+ flash-fpga - Make armsrc and flash fpga
+ flash-both - Make armsrc and flash os and fpga image
+ flash-all - Make bootrom and armsrc and flash bootrom, os and fpga image
+ clean - Clean in bootrom, armsrc and the OS-specific host directory
这些东西看的不太懂,os不知道指的是在pc上面运行的软件还是固件的一部分,后来看看make client那个选项,觉的OS-specific host directory指的是pc运行的客户端软件,里面使用了QT的.
根据分析at91sam7s512里面的固件应该分成两部分,一部分叫os,另外一部分叫armsrc,
at91sam7s512里面还有一部分boot image,
另外还有一部分叫着fpga image的,我觉的应该是编译完成后包含在armsrc里面的,因为这个编译的时候总是有armsrc,以后看到这部分的时候再确定一下吧.
在启动开发环境的时候,在ProxSpace的目录下面有个runme.bat的批处理文件,里面设置的是指向msys下面的 /etc/fstab文件,runme.bat启动的时候将内容写入到fstab里面,
至于fstab文件的作用可以查到是设置起始的映射.
#Win32_Path Mount_Point
\proxmark3\ProxSpace\mingw /mingw
\proxmark3\ProxSpace\devkitARM /devkitARM
\proxmark3\ProxSpace\Qt\4.6.2 /qt
\proxmark3\ProxSpace\pm3 /pm3
但是在msys启动以后不知道如何确定这个映射关系,以下分析终止了.
另外写了一个启动脚本来设置cygwin的环境.
#!/bin/bash
QTDIR=E:/proxmark3/ProxSpace/Qt/4.6.2
PATH=${PATH}:/cygdrive/e/proxmark3/ProxSpace/devkitARM/bin:/cygdrive/e/proxmark3/ProxSpace/mingw/bin
export QTDIR PATH
设置三个运行环境,一个是arm的编译环境,mingw的编译环境,qt的编译环境.
注意QTDIR的路径格式与PATH中的路径格式是不一样的,这个就是msys不够智能的原因了,msys只能认识windows的格式,如果改成cygwin格式,路径是不会被识别的,搞的比较麻烦.
不过由于我的pc有另外版本的arm-none-eabi-gcc编译器,用来编译pm3的时候出现错误,还是用原来的版本来编译吧.
查找armsrc下面的Makefile里面没有编译器的声明,找到common文件夹下面的Makefile.common里面将
CROSS ?= arm-none-eabi-
修改为
CROSS ?= /cygdrive/e/proxmark3/ProxSpace/devkitARM/bin/arm-none-eabi-
这样arm的程序就可以编译了.
在编译QT的时候出现错误 LDLIBS += -ldl 这个库找不到,
这个原因是qt编译的环境设置问题,编译过程中找的环境是CYGWIN (用uname可以查),在client/Makefile加入
else ifneq (,$(findstring CYGWIN,$(platform)))
CXXFLAGS = -I$(QTDIR)/include -I$(QTDIR)/include/QtCore -I$(QTDIR)/include/QtGui
QTLDLIBS = -L$(QTDIR)/lib -lQtCore4 -lQtGui4
MOC = $(QTDIR)/bin/moc
LUAPLATFORM = mingw
这样就可以正常编译了.
还需要注意的是如果机器上面的CYGWIN已经装了gcc,也会跟环境设置的gcc冲突,所以需要修改client/Makefile下面的两行
CC=gcc
CXX=g++
因为我在cygwin上面没有装gcc,所以这一步就省了.