Tak oto sytuacja: muszę mieć możliwość kompilowania plików binarnych z komputera z systemem Linux (w systemie Ubuntu, ile to jest warte), które można uruchomić z serwera SPARC. Program Próbuję skompilować jest bardzo prosta:Nie można skompilować krzyżowo do SPARC za pomocą clang
#include <stdio.h>
#include <stdlib.h>
int main() {
printf("Testing the SPARC program...");
return EXIT_SUCCESS;
}
Próbowałem wiele różnych linii kompilacji aby zmusić go do pracy, ale niestety nic nie wydaje się działać.
Próbowałem tradycyjna:
clang -target sparc blah.c -o blahsparc
Ale to nie działa, z wieloma awariami asemblera:
/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)
próbowałem to również:
clang -cc1 -triple "sparc-unknown-Linux" blah.c -o blahsparc
, który narzeka na brakujące nagłówki, więc zamiast używać -cc1, używam -Xclang:
clang -Xclang -triple -Xclang "sparc-unknown-Linux" blah.c -o blahsparc
jednak to również nie działa z powodu "błędu: nieznanego docelowego procesora" x86-64 "". Nie jestem pewien, jak to zrobić. Próbowałem również używać crosstool-ng z bardzo małym sukcesem.
Clang [dokumentacja] (http://clang.llvm.org/docs/UsersManual.html) sugeruje, że obsługa SPARC nie jest kompletna. – nneonneo
Czy sprawdziłeś najnowszy kod i zbudowałeś go sam? Jestem pewien, że clang/llvm w ubuntu to dobra droga za svn trunk. Widzę sporadyczne zobowiązania do LLVM dla sparc, więc przynajmniej wsparcie dla llvm powinno się poprawić. – cb88