2014-02-08 3 views
9

Похоже, простой вопрос, но это занимает много времени, чтобы выяснить ...Clang и LLVM - релиз против отладки строит

instructions for building LLVM+Clang В, А Release и ä отлаживать конфигурации упоминается. Есть версия для отладки:

  • Debugging LLVM/Clang сам,

ИЛИ

  • Отладка приложения, которые вы пытаетесь построить с Clang + LLVM?

Первоначально предполагалось, что первое, но затем (1) оно по умолчанию, (2) я нашел несколько наборов инструкций, которые направляют нас на создание режима отладки, (3), пока я предполагаю что это будет представлять интерес для относительно небольшой доли пользователей - большинство из них захочет использовать Clang + LLVM, а не вникать в тонкости оптимизации дизайна компилятора.

Я планирую использовать Clang вместо GCC, чтобы использовать, из того, что я слышал, более эффективные сообщения об ошибках, но мне нужно отлаживать программы, которые он создает под GDB, . Для этого достаточно версии Release Clang?

(Обратите внимание, что Debug версия is a few GB и, вероятно, займет много времени, чтобы построить, так что я предпочел бы узнать легкий путь.)

Plus, on that same page, он говорит, что я должен указать ONLY_TOOLS="tools you need", но где список на выбор?

ответ

10

Первое правильно - вам нужно только создать LLVM и Clang в режиме отладки, если вы хотите отлаживать компилятор. Если вы хотите отладить созданное приложение, вам необходимо скомпилировать его с помощью символов отладки - то есть передать флаг -g Clang при создании вашей программы - и это будет включено независимо от того, в каком режиме были созданы LLVM и Clang.

Так что для ваших нужд вы должны скомпилироваться в режиме деблокирования.

Что касается вашего вопроса - почему это по умолчанию - я предполагаю, что это потому, что предполагается, что если вы хотите просто запустить его, вы просто получите pre-built binary вместо загрузки и создания исходного кода.

Кроме того, в отношении этого последнего вопроса вы прокрались внутрь - я считаю, что это относится к инструментам от this list of LLVM tools.

+0

Где-то я читал, что предварительно созданные двоичные объекты Visual Studio в некотором роде и, действительно, пытаются его использовать (и указывая систему, включают в себя пути с 'isystem', как описано [здесь] (http://stackoverflow.com/a/17104069/1143274) '$ clang ++ -std = C++ 11 -система/usr/local/include -isystem /mingw/lib/gcc/mingw32/4.8.1/include/c++ -isystem/mingw/lib/gcc/mingw32/4.8.1/include/C++/mingw32/-система /mingw/lib/gcc/mingw32/4.8.1/include/c++/backward/ -система/mingw/include/-система/mingw/lib/gcc /mingw32/4.8.1/include -isystem /mingw/lib/gcc/mingw32/4.8.1/include-fixed/ b.cpp', я получаю: –

+1

... 'C:/m/lib/gcc/mingw32/4.8.1/include \ x86intrin.h: 27: C: /m/lib/gcc/mingw32/4.8.1/include \ ia32intrin.h: 41: 10: ошибка: использование необъявленного идентификатора «__builtin_ia32_bsrsi» return __builtin_ia32_bsrsi (__X); ' –

+0

Не очень удачная попытка« сделать »последнюю версию SVN или последнюю версию, 3.4, под MinGW/MSYS: я получаю 'llvm/lib/Support/Windows/Process.inc: 366: 32: ошибка:« rand_s »не была объявлена ​​в этой области». Поэтому отказываться пока, потому что, хотя я уверен, что смогу заставить его работать в моей системе после некоторого устранения неполадок, он должен быть достаточно простым для других, чтобы сделать это менее чем за 10 простых шагов, а также быть надежным для будущего. замечания по предложениям, которые я собираюсь распространять. –

Смежные вопросы