неопределенная ссылка на `__dynamic_cast 'с использованием libc ++ в Ubuntu
Я пытаюсь скомпилировать тестовый пример, который используетdynamic_cast
используя libc ++, который был скомпилирован в соответствии с«Сборка под Linux с использованием CMake и libsupc ++».
#include <iostream>
struct A
{
virtual void f(){ std::cout << "Virtual A" << std::endl; }
virtual ~A(){}
};
struct B : public A
{
void f() { std::cout << "Virtual B" << std::endl; }
virtual ~B(){}
};
int main()
{
A *a = new B;
B *b = dynamic_cast<B *>(a);
delete a;
}
Я на Ubuntu 13.04 и компилирую сclang++ -std=c++11 -stdlib=libc++
.
Почему я получаюundefined reference to '__dynamic_cast'
? Как это решить?
Похоже, это как-то связано с libc ++ abiтак как я вижу__dynamic_cast
прототип в спецификации, Я ожидалlibsupc++
первый вариант сборки, чтобы работать без таких проблем ... и пытается скомпилировать libc ++ abi на Linuxэто другая проблема сама.
Это похоже наКомпиляция с Clang с использованием неопределенных ссылок на Libc ++.
Если это действительно проблема, существует ли простой процесс использования libc ++ в Linux, который может скомпилировать этот короткий фрагмент, или он просто еще не поддерживается?