win10下,用sdk2019.1编译microblaze时,出现error,createprocess,no such file ,
经过研究发现,是gcc工具出了问题。
2019.1使用的8.2.0,2018.3使用的7.3.1,均会出问题。
但是使用2017.4或者2017.3,不会出问题,使用的是6.2.0。
解决方法:
懒人版:
删除D:\Xilinx\SDK\2019.1\gnu\microblaze,整个文件夹。
安装一个2017.3或者4,找到D:\Xilinx\SDK\2017.4\gnu\microblaze,将整个microblaze文件夹拷贝到D:\Xilinx\SDK\2019.1\gnu\microblaze。
精细版:
安装一个2017.3或者4,
找到D:\Xilinx\SDK\2017.4\gnu\microblaze\nt\microblaze-xilinx-elf\bin,将整个bin文件夹拷贝到
D:\Xilinx\SDK\2019.1\gnu\microblaze\nt\microblaze-xilinx-elf\bin。覆盖它里面的文件。
D:\Xilinx\SDK\2017.4\gnu\microblaze\nt\libexec\gcc\microblaze-xilinx-elf\6.2.0,将整个6.2.0文件夹拷贝到D:\Xilinx\SDK\2019.1\gnu\microblaze\nt\libexec\gcc\microblaze-xilinx-elf\8.2.0,覆盖它里面的文件。
linker,有几个选项,会影响到编译。
例如出现错误,
undefined reference to `__ctype_ptr__'
undefined reference to _exception_handler'
undefined reference to `_program_init'
undefined reference to `_program_clean'
这是因为在C++代码中,使用了C的符号。
而且选择了-nodefaultlibs链接选项。
去掉这个选项可以解决。
选择-nostartfile,或者-nostdlib,可以解决。
例如出现错误,
_udivdi3.o: unknown relocation type 33
选择omit all symbol information, 可以解决。
但是,这不是好的选择,所以这个选项最好不要选。
选择-nostartfile,或者-nostdlib,可以解决。
++++++++++++++++++++++++++++++++++
HLS下也可能出现类似的问题,
从一台确认OK的电脑上的19.1下,拷贝tps文件夹和msys64文件夹。
如果不行,就从SDK的microblaze的linux_toolchain的nt64_le的620中,拷贝collect2.exe。
还不行,就从SDK的microblaze的linux_toolchain的nt_le的620中,拷贝collect2.exe。
还不行,就从SDK的microblaze的nt的620中,拷贝collect2.exe。
最后一招,从19.1的tps的443中,拷贝出collect2.exe,放到msys64中去。