2013-01-14 5 views
7

По LLVM's Getting Started (Windows) site:Почему clang/llvm на окнах требует Link.exe Visual Studio?

... Clang может быть использован для испускает битовый код, непосредственно испускает объектные файлы или даже связанные исполняемые файлы с помощью link.exe из Visual Studio.

Почему использование Link.exe на Windows необходимо? И, если уж на то пошло, что используется на Mac/Linux? Далее в нем говорится:

Compile the program to object code using the LLC code generator: 
    C:\..> llc -filetype=obj hello.bc 
Link to binary using Microsoft link: 
    C:\..> link hello.obj -defaultlib:libcmt 

Почему компания не может выполнить последний шаг? LLI, похоже, работает нормально, поэтому я предполагаю, что он взаимодействует с link.exe как-то под капотом - почему не может LLC?

ответ

11

Поскольку никто не написал линкер для LLVM.

Существует проект для этого (называется, невообразимо lld), но он еще не готов.

См. http://lld.llvm.org для получения более подробной информации.

На mac, люди используют компоновщик Apple, ld.

В Linux, большинство людей используют ГНУ компоновщик, как правило, (также) с именем ld

+0

Я думаю, это означает, что LLVM не делает LTO? – Mehrdad

+0

@Mehrdad: LLVM делает LTO на уровне IR. Но даже если исполняемый файл создается из одного файла .s, он все равно должен быть связан. –

+1

@Mehrdad, как 'gold', так и Mac' ld' могут использовать плагин LLVM для LTO. –

5

Попробуйте ЛД MinGW-w64 в. Я использовал его с clang llvm вместо VS-инструментов, которые я использовал для создания clang в первую очередь.