cygwin下面编译proxmark3(at 2015.09.09)

使用自带的MSYS环境可以编译proxmark3,但是对于那简陋的界面实在看不过去,所以就有使用cygwin来代替的想法,刚开始看proxmark3的编译过程有点蒙,首先运行make help

有许多的提示

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,所以这一步就省了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值