Assembly 将Linux.s文件链接到Windows程序

Assembly 将Linux.s文件链接到Windows程序,assembly,g++,mingw,Assembly,G++,Mingw,是否可以将Linux部分布局中LLVM生成的.s文件与Windows程序链接?我需要使用ISPC生成一些代码,然后为Windows和Linux交叉编译它们。我知道有一个Windows ISPC端口,但我想保持整个开发环境为纯Linux 附件是我如何编译我的程序: ispc simple.ispc-O2--emit asm-o simple\u ispc.s g++simple.cpp simple\u ispc.s-O2-o simple x86_64-w64-mingw32-g++simple

是否可以将Linux部分布局中LLVM生成的.s文件与Windows程序链接?我需要使用ISPC生成一些代码,然后为Windows和Linux交叉编译它们。我知道有一个Windows ISPC端口,但我想保持整个开发环境为纯Linux

附件是我如何编译我的程序:

ispc simple.ispc-O2--emit asm-o simple\u ispc.s

g++simple.cpp simple\u ispc.s-O2-o simple

x86_64-w64-mingw32-g++simple.cpp simple\u ispc.s-o simple.exe

rm-f*.o*.s

Mingw在处理ISPC生成的.s时抛出大量错误。G++forlinux很好地编译了这个程序。Mingw无法识别
.size
.type
指令以及
rodata
部分


我还尝试链接由ISPC生成的.o,结果明显失败。

这些指令给出错误,因为它们在ELF目标(如Linux)中的使用方式与在PECOFF目标(Windows)中的使用方式不同。由于您在Linux下使用的是GCC的Windows端口(MinGW-w64),您应该看到ISPC的Windows端口在Linux下作为交叉编译器提供。好的,ISPC没有交叉编译端口。不幸的是,这意味着可能没有一个简单的解决方案。你收到的错误只是冰山一角。IPSC为Linux生成的代码将遵循Linux x86_64 ABI,而为Windows生成的代码将遵循Microsoft的x64调用约定。生成的代码还将在Linux上使用Linux API,在Windows上使用Windows API。那么是否可以让ISPC生成LLVM字节码,然后我使用LLVM生成Windows对象代码,最后使用mingw将所有内容链接在一起?我100%确定我的代码中没有系统调用。这将是创建自己的ISPC交叉编译版本的第一步,但这样您仍然会遇到API问题。您的代码可能不会进行API调用,但ISPC生成的代码会进行。有关以ISPC交叉编译器为目标的Windows托管Linux的讨论,请参阅本文: