Есть ли binutils для llvm? - PullRequest
       37

Есть ли binutils для llvm?

4 голосов
/ 09 марта 2011

У набора инструментов компилятора LLVM есть gcc, который совместим с обычным gcc. Преимущество использования llvm-gcc заключается в том, что он идет к произвольной цели, что означает, что обычный gcc не скажет такой цели при попытке компилировать в произвольную архитектуру, скажем, mips-apple-darwin. Однако на самом деле llvm-gcc создаст компилятор для Mac OS X на процессоре mips.

Однако, здесь есть одна загвоздка: чтобы построить случайную цель, вам нужны уже созданные binutils для этой цели. Так что если у вас есть цель, с которой llvm будет компилироваться, а binutils не может, то вы не сможете создать компилятор, потому что GNU Binutils не поддерживает эту цель.

Итак ... Вот вопрос: существует ли эквивалентный llvm-binutils, такой как llvm-gcc, который совместим с GNU Binutils? (имеется в виду тот, который строится на произвольной цели, а не один из списка.)

EDIT:

Под произвольным подразумевается, что я не выбираю цель при запуске llvm-gcc, я выбираю цель при компиляции llvm-gcc. Значение: если я пытаюсь скомпилировать GCC для mips-apple-darwin, я получаю цель, которая не поддерживается. Но если я соберу llvm-gcc для mips-apple-darwin, он будет работать, пока у меня есть mips-apple-darwin-as и mips-apple-darwin-ld.

Ответы [ 2 ]

2 голосов
/ 09 марта 2011

Насколько я могу судить, LLVM не компилируется для произвольной цели. У вас должны быть все включения и определения, соответствующие вашей цели, и обычно у llvm есть серверная часть для генерации кода для указанной цели. Прочитайте "Могу ли я скомпилировать код C или C ++ в независимый от платформы битовый код LLVM?" от http://llvm.org/docs/FAQ.html.

Чтобы ответить на этот вопрос, llvm не использует GNU binutils, у llvm есть свои «binutils» для генерации кода (называемый базовым проектом LLVM). Дизассемблер и отладчик являются частью проекта LLDB.

Где LLVM приносит некоторую независимость, это на уровне языка. Ваш проект может быть написан на C / C ++, Ada, Fortran и т. Д. ... llvm поставляется с возможностью преобразовать ваш код в промежуточное представление. Этот IR в конечном итоге будет генерировать код.

1 голос
/ 10 марта 2011

llvm-gcc не поддерживает произвольные цели.llvm-gcc должен быть создан специально для любой цели.может лязг + LLVM.Я пытаюсь сделать это с помощью ellcc: http://ellcc.org. Я использую binutils для сборки и компоновки.

...