2015-03-28 10 views
5

Próbuję skompilować moje projekty na Arch Linux x64 wykorzystaniem libC++, libC++ abi i Clang ++ 3.6. 0.Niezdefiniowany odniesienia do `__cxa_thread_atexit @@ CXXABI` podczas kompilacji z` `libC++ na Linux

Projekty skompilować poprawnie, ale nie odwołuje się z powodu następującego błędu:

error: CMakeFiles/main.cpp.o: undefined reference to symbol '[email protected]@CXXABI_1.3.7'

/usr/lib/libstdc++.so.6:-1: error: error adding symbols: DSO missing from command line

mam kompilowania i łączenie za pomocą -stdlib=libc++ -lc++abi flagi.

Czy istnieje dodatkowa biblioteka, którą powinienem połączyć? Czy brakuje mi flagi?

+0

Szybkie wyszukiwanie w Google sugeruje, że nie jest to zaimplementowane w ABI w C++. –

Odpowiedz

7

Albo związek z -lsupc++ lub dostarczyć niewielką funkcję otoki (prawdopodobnie lepszy sposób na libc++) dla realizacji glibc:

extern "C" int __cxa_thread_atexit(void (*func)(), void *obj, 
            void *dso_symbol) { 
    int __cxa_thread_atexit_impl(void (*)(), void *, void *); 
    return __cxa_thread_atexit_impl(func, obj, dso_symbol); 
} 

może warto wspomnieć, że to działa tylko z glibc> = 2,18 .

Powiązane problemy