使用MSYS搭建linux开发环境踩坑笔记
前言:
使用linux系统或虚拟机进行嵌入式linux开发是常规方法; 使用MSYS是用于尝鲜和研究。
由于windows和linux的差异,使用MSYS代替Linux虚拟机会遇到很多坑。 主要原因在于:
- windows和linux文件系统的差异:win不区分文件名大小写, linux要区分
- 路径分隔符的差异: win使用""分隔路径, linux使用"/“分隔路径
- 可执行文件的差异:win执行文件后缀名*.exe,linux可执行文件不需要后缀名
成果:
目前MSYS环境已经成功用于编译linux应用层软件,linux内核, U-Boot等。
踩坑1:传递编译参数-Wl,–dynamic-linker=/lib/ld-linux.so,编译后结果路径是错的! 原因:MSYS调用mingw的gcc.exe传递路径参数时,会转换为windows文件路径。 解决:MSYS工具链不要和mingw混用;路径使用双斜杠//开头也能凑合使用。
踩坑2:编译设备树失败: No rule to make target ‘arch/arm/boot/dts/*.dtb’, needed by ‘__build’. 原因:Makefile生成dtb需要调用dtc,而windows下面dtc编译出来是dtc.exe,文件名不一致。 解决:把dtc.exe改名为dtc
踩坑3:创建软链接行为异常,导致一些编译脚本报错 原因:ln -s创建软链接其行为竟然是复制文件/文件夹. 解决:添加环境变量:export MSYS=“winsymlinks:lnk”
持续更新…