加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 无法使用clang交叉编译到SPARC

发布时间:2020-12-16 03:21:05 所属栏目:百科 来源:网络整理
导读:所以情况就是这样:我需要能够从 Linux机器(在Ubuntu上,它的价值)编译二进制文件,它们能够从SPARC服务器运行.我正在尝试编译的程序非常简单: #include stdio.h#include stdlib.hint main() { printf("Testing the SPARC program..."); return EXIT_SUCCESS;
所以情况就是这样:我需要能够从 Linux机器(在Ubuntu上,它的价值)编译二进制文件,它们能够从SPARC服务器运行.我正在尝试编译的程序非常简单:
#include <stdio.h>
#include <stdlib.h>

int main() {
    printf("Testing the SPARC program...");
    return EXIT_SUCCESS;
}

我已经尝试了许多不同的编译行来使它工作,但不幸的是似乎没有任何工作.

我试过传统的:

clang -target sparc blah.c -o blahsparc

但这不起作用,有一堆汇编程序失败:

/tmp/blah-519e77.s: Assembler messages:
 /tmp/blah-519e77.s:7: Error: unknown pseudo-op: '.register'
 /tmp/blah-519e77.s:8: Error: unknown pseudo-op: '.register'
 /tmp/blah-519e77.s:9: Error: unknown pseudo-op: '.register'
 /tmp/blah-519e77.s:10: Error: unknown pseudo-op: '.register'
 /tmp/blah-519e77.s:11: Error: no such instruction: 'save %sp,-240,%sp'
 /tmp/blah-519e77.s:12: Error: no such instruction: 'st %g0,[%fp+2043]'
 ...
 clang: error: assembler (via gcc) command failed with exit code 1 (use -v to see invocation)

我也试过这个:

clang -cc1 -triple "sparc-unknown-Linux" blah.c -o blahsparc

抱怨丢失的标题,所以不使用-cc1,我使用-Xclang:

clang -Xclang -triple -Xclang "sparc-unknown-Linux" blah.c -o blahsparc

但是,由于“错误:未知目标CPU’x86-64’”,这也会失败.
我不知道在哪里继续这个.我尝试过使用crosstool-ng,但收效甚微.

解决方法

从3.4.2版本(2014年6月)开始,llvm缺少能够为sparc目标生成目标文件所需的代码.旧版本(1.x和2.x)支持它,但是llvm用于发出目标文件的框架在那时还不太成熟.当前框架推出时,看起来他们没有迁移所有平台.

documentation似乎意味着已知llvm / gcc的组合可以工作,但我认为该表是基于llvm的早期版本制表的,当时它们有一个不太成熟的发送目标文件的框架.

在版本r198533中,对发送目标文件的支持已添加到其SVN主干中(this thread讨论了提交),但正如您在3.4.2 final release中所见,文件& r198533中添加的更改不存在.

顺便说一句,clang目前在sparc solaris中不起作用(一般不确定sparc).解析器似乎无法解析模板;我得到了coredumps&类似.我大约在一周前遇到了thread,讨论了sparc / solaris clang中的对齐问题,这可能是clang尚未在此平台上使用的原因之一.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读