尝试在windows上为linux编译(clang/llvm/ld.ldd)时出现函数不受支持错误

我正在尝试从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
没有对本地目录的写入权限

发表评论