BUSMASTER编译报错:File not recognized及ABS_ECU目标构建失败求助
构建ABS_ECU节点时"File not recognized"错误排查方案
问题详情
构建BUSMASTER的ABS_ECU节点时,出现文件格式不识别错误,导致链接失败,具体报错如下:
D:\BUSMASTER\Configurations\ABS_ECU.cpp C:\ProgramData\BUSMASTER\General\DBCache\CE7D_gcc10.3.0.obj: file not recognized: File format not recognized collect2.exe: error: ld returned 1 exit status mingw32-make.exe: *** (ABS_ECU.dll] Error 1 D:\BUSMASTER\Configurations\ABS_ECUmake:19: recipe for target 'ABS_ECU.d11' failed Error in creating D:\BUSMASTER\Configurations\ABS_ECU.d11
解决步骤
- 删除损坏的缓存文件:直接删除
C:\ProgramData\BUSMASTER\General\DBCache\CE7D_gcc10.3.0.obj,然后重新执行构建命令。缓存文件可能因中断、权限问题生成不完整,导致格式异常。 - 校验编译器版本:确认当前使用的MinGW GCC版本与缓存文件名标注的
gcc10.3.0一致。如果版本不匹配,切换到对应版本的编译器,或清理所有缓存后用当前版本重新编译。 - 重置构建依赖:删除
ABS_ECUmake文件中指定的临时输出文件,重新生成makefile后再执行构建,避免依赖文件残留导致的冲突。 - 检查目录权限:确保
C:\ProgramData\BUSMASTER\General\DBCache和D:\BUSMASTER\Configurations目录有读写权限,防止生成的obj或dll文件因权限问题损坏。 - 手动编译验证:先单独编译源文件,执行命令
g++ -c D:\BUSMASTER\Configurations\ABS_ECU.cpp -o temp.obj,再尝试链接生成dll:g++ -shared temp.obj -o ABS_ECU.dll,看是否能正常完成,以此排查是编译阶段还是链接阶段的问题。
内容的提问来源于stack exchange,提问作者Srinidhi Dixit
相关产品推荐
相关产品推荐

