Microchip
直播中

冰封夕阳

12年用户 16经验值
擅长:模拟技术
私信 关注
[讨论]

求助帖:MPLABX v6.00 + XC32 V4.00 貌似编译文件过多会无法编译

问题描述:
写芯片底层的一些驱动,一直都很正常。上周心血来潮打算移植emwin图形界面用一下,搜了一遍官网没发现有提供库,没办法只能移植源码,在网上找了一份V5.06a版本的源码,因为前期没有写EBI的驱动,所以先在别的平台上验证这份源码(在NXP的芯片MK64上成功移植,keil环境,跑了一下emwin的示例,显示都正常,因为NXP的MK64官网有emwin的库,以前有移植过库版本,这个源码的显示情况对比了一下库版本的显示),没发现问题,于是把源码从keil移植到mplabx平台,移植过程很顺利,但编译发现提示,提示一些编译错误,看起来也不像语法错误,毕竟在keil上成功编译,在mplabx上修改一些端口,重新指定头文件的路径。到网络上搜索了一下错误提示,没发现有相同的提问,但貌似这个问题是由于添加的文件过多造成的,查看了一下文件个数,包括头文件,大约共有1千1百多个。这个问题是否是文件过多造成的?有谁知道如何定位,解决这个问题?

环境:MPLABX v6.00 + XC32 V4.00(免费版本)  + ICD4
工程类型为:Standalone Project
移植之前工程编译,仿真都是没问题的。
错误提示2.jpg 错误提示1.jpg 错误提示0.jpg

回帖(1)

冰封夕阳

2022-3-22 16:44:03
process_begin: CreateProcess(.....
make (e=87): The parameter is incorrect.
国内没人反馈这个问题,倒是老外对于这个问题进行了相对比较深入的探讨
https://github.com/ARMmbed/mbed-os/issues/6335
问题的根本原因在于微软的操作系统创建进程的形参,命令行最大长度限制是32K,超了就会出现这种错误。
“Windows CreateProcess() only accepts command line maximum length to be 32,768 characters. ”
根本的解决方法应该是修改链接器的脚本(本人没有这个实力,感觉在这上面浪费时间也不值得),linux和苹果的系统不存在这个问题,于是想了一个曲线救国的方法,在linux下进行编译,把emWin的源码打包生成库,把这个库再拿到windows下用,这样虽然没有解决问题,但是绕过了问题。有哪位大神能够在windows下解决这个限制问题(修改链接器脚本),记得通知我一下,小弟感激不尽。
linux用虚拟机编译需要13分钟,VMware Workstation PRO 16的试用版本 + centos7的完全版本(centos-7-x86_64-everything-2009),可能是虚拟机效率不行(没办法确认效率)。用阿里云的话,因为开启就会提示没有显示器,没办法用。
windows添加库之后,编译就很快了。
linux成功编译.jpg
win成功编译0.jpg



举报

更多回帖

发帖
×
20
完善资料,
赚取积分