Ответ 1
Я использовал "clang" вместо "clang++", то есть он не связывал стандартную библиотеку С++.
Какой линкер я использую для clang? Если я использую clang или ld в качестве компоновщика, я получаю огромное количество ошибок, как будто я не связывался со стандартной библиотекой.
g++ $(OBJS) -o $(BINDIR)/obtap
Кажется, мне нужно использовать g++, чтобы связать мои объекты clang.
Я использовал "clang" вместо "clang++", то есть он не связывал стандартную библиотеку С++.
Вам не нужно использовать редактор ссылок llvm. Я не буду вдаваться в технические подробности, но, короче говоря, вам понадобится типичный редактор ссылок UNIX для использования Clang в это время (читайте: GNU ld или Sun ld). Даже llvm-ld использует базовый компоновщик платформы для связывания родных двоичных файлов.
Последующее наблюдение: теперь 2016 год, и llvm добился определенного прогресса на своем собственном компоновщике. Он называется "lld", а находится здесь. Он отлично работает, чтобы создавать бинарные файлы i386 и x86_64, в то время как работа продолжается для других систем.
Это должно устранить зависимость от инструментов GNU для BSD, если она считается достаточно стабильной.