eez*_*eet 7 c c++ sparc clang llvm-clang
所以情况就是这样:我需要能够从Linux机器(在Ubuntu上,它的价值)编译二进制文件,它们能够从SPARC服务器运行.我正在尝试编译的程序非常简单:
#include <stdio.h>
#include <stdlib.h>
int main() {
printf("Testing the SPARC program...");
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了许多不同的编译行来使它工作,但不幸的是似乎没有任何工作.
我试过传统的:
clang -target sparc blah.c -o blahsparc
Run Code Online (Sandbox Code Playgroud)
但这不起作用,有一堆汇编程序失败:
/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)
Run Code Online (Sandbox Code Playgroud)
我也试过这个:
clang -cc1 -triple "sparc-unknown-Linux" blah.c -o blahsparc
Run Code Online (Sandbox Code Playgroud)
抱怨丢失的标题,所以不使用-cc1,我使用-Xclang:
clang -Xclang -triple -Xclang "sparc-unknown-Linux" blah.c -o blahsparc
Run Code Online (Sandbox Code Playgroud)
但是,由于"错误:未知目标CPU'x86-64'",这也会失败.我不知道在哪里继续这个.我尝试过使用crosstool-ng,但收效甚微.
截至 3.4.2 版本(2014 年 6 月),llvm 缺少能够为 sparc 目标生成目标文件所需的代码。较旧的版本(1.x 和 2.x)支持它,但当时 llvm 发出对象文件的框架还不太成熟。当当前的框架推出时,看起来他们并没有迁移所有平台。
该文档似乎暗示 llvm/gcc 的组合已知可以工作,但我认为该表是基于 llvm 的早期版本制成的,当时它们具有不太成熟的用于发出目标文件的框架。
在修订版r198533中,对发出对象文件的支持已添加到其 SVN 主干(此线程讨论提交),但正如您在3.4.2 最终版本中所看到的,r198533中添加的文件和更改不存在。
顺便说一句,clang 目前在 sparc Solaris 中不起作用(一般情况下不确定 sparc)。解析器似乎在解析模板时遇到问题;我得到核心转储等。大约一周前,我遇到了一个线程,讨论 sparc/solaris clang 中的对齐问题,这可能是 clang 尚未在此平台上使用的原因之一。
归档时间: |
|
查看次数: |
1506 次 |
最近记录: |