Когда нужны источники libC++ при сборке Clang из исходников?
Я много лет собирал Clang для Linux и OS X. На странице загрузки LLVM я всегда использовал следующие источники:
- LLVM (источник LLVM)
- Внешний интерфейс компилятора (источник Clang)
- Компилятор RT (источник времени выполнения)
- Инструменты компилятора (Инструменты Дополнительные источники)
Рецепт, который я использую для загрузки, сборки и установки Clang 3.5, можно найти на Clang 3.5, скрипт загрузки, сборки и установки.
Он отлично работает на OS X 10.7 и 10.8, и мне никогда не требовался механизм libC++ на OS X 10.7.x или 10.8.x (это примерно через 2010 или около того).
Вопрос: когда нужны исходные коды libC++ и libC++ ABI?
Я пытаюсь помочь устранить проблему невозможности скомпилировать простую программу C++ "Hello World" на OS X 10.9. Clang 3.5 установлен в /usr/local
(так же, как другие), но он не может найти заголовки (как <iostream>
) и он встречает неопределенные символы во время ссылки (например, "std::ostream::operator<<(std::ostream& (*)(std::ostream&))"
).
Мне интересно, есть ли в 10.7 и 10.8 заголовки и библиотеки, в которых ожидались предыдущие версии Clang, но для 10.9 они нужны и собраны.
Вопрос: это симптом отсутствующего libC++ и libC++ ABI?
1 ответ
При сборке / установке clang вы должны проверить исходные тексты libC++, чтобы вы также установили C++ STL.
Если у вас нет среды выполнения libC++ в вашей системе, вы должны проверить и установить libC++ abi и libC++, которые могут быть выполнены автономно и независимо от их извлечения в вашей установке llvm/clang.
Для справки я предлагаю вам взглянуть на порты libcxxabi, libcxx, libunwind и llvm-XY в MacPorts, которые показывают, как я настроил эти проекты для сборки на Leopard через Yosemite.