我正在尝试从windows编译linux二进制文件。我有一个名为slim.c的文件,粘贴在底部
在linux和Mac上,我可以使用
/usr/bin/clang-c slim.c-static-nostlib–target=x86_64-pc-linux-gnu
在我使用的linux上
/usr/bin/ld.lld slim.o
在mac上是一样的,但路径不同
/usr/local/bin/ld.lld slim.o
两者都生成一个我可以执行的linux二进制文件。但是在windows上我会出错。我尝试了windows build system附带的叮当声,然后从他们的github(13.0)抓取了llvm的构建
”;C:\ProgramFiles\LLVM\bin\clang.exe“-c slim.c-static-nostlib--target=x86_64-pc-linux-gnu
&引用;C:\ProgramFiles\LLVM\bin\ld.lld.exe;斯利姆
ld.lld:错误:无法打开输出文件a.out:不支持函数
它不仅仅发生在直接使用ld.lld时。如果我尝试从clang构建/链接,我也会得到一个;“不支持函数”;错误
知道我可以使用什么编译器选项或下载什么吗
slim.o的来源
typedef无符号长整型大小\u t;
typedef long long int ssize\t;
typedef long long int int64_t;
ssize\u t my\u write(int fd,const void*buf,size\u t size){
寄存器int64“t rax”asm(“rax”)=1;
寄存器int rdi asm=fd;
寄存器常数void*rsi asm=buf;
寄存器大小rdx asm=size;
__asm\uuuuuu挥发性(
&“系统调用”;
:“r”(rax)
:“r”(rdi)、“r”(rsi)、“r”(rdx)
:“cc”、“rcx”、“r11”、“内存”;
);
返回rax;
}
作废我的退出(int退出状态){
寄存器int64“t rax”asm(“rax”)=60;
注册int rdi asm(";rdi";)=退出状态;
__asm\uuuuuu挥发性(
&“系统调用”;
:“r”(rax)
:“r”(rdi)
:“cc”、“rcx”、“r11”、“内存”;
);
}
int_start(){
我写的(1,“你好”,6);
我的_出口(0);
返回0;
}
最有可能的是,ld.lld
没有对本地目录的写入权限