Как да демонтирам C++ име в clang (или gcc)?

Опитвам се да напиша бърз и мръсен деманглер за clang. Намерих част от код, който използва abi::__cxa_demangle, но не мога да разбера коя заглавка изисква. Очевидният избор е ABI.h, но:

demangle.cpp:2:10: fatal error: 'ABI.h' file not found
#include <ABI.h>
         ^

Какво ми трябва, за да използвам abi::__cxa_demangle?


person Adam    schedule 12.10.2013    source източник


Отговори (2)


Включете cxxabi.h. В Ubuntu 13 тази заглавка е в /usr/include/c++/4.x, където x е второстепенна gcc версия.

person Marat Dukhan    schedule 12.10.2013
comment
Това не е част от моята Linux дистрибуция и не е част от стандартната библиотека llvm C++. И така, какво да правя? Има cxxabi.h в пътя за включване на gcc, но ще работи ли с clang++ -stdlib=libc++? - person Walter; 20.04.2014
comment
@Walter опитайте #include <cxxabi.h> без да добавяте специални включващи пътища. Между другото, вижте дали c++filt е достатъчно за вашите нужди. - person Adam; 20.04.2014
comment
@Адам, че (#include <cxxabi.h>) е това, което направих. Не, c++filt не е достатъчно за моите нужди :-(( - person Walter; 22.04.2014
comment
@Walter, тогава не знам. Clang го включва в OSX, така че не виждам защо да не е достъпен чрез някакъв пакет. Не мисля, че можете да предположите, че можете да използвате gcc. - person Adam; 23.04.2014
comment
@Walter имате ли инсталиран libstdc++-4.8-dev или libc++-dev (или еквивалент във вашата дистрибуция за вашия компилатор)? - person Massa; 04.06.2014

Включете cxxabi.h, но за clang в Ubuntu ще трябва да инсталирате пакета libc++abi-dev.

person Chris Sherlock    schedule 06.01.2015