ile libclang kullanamazsınız Bir Qt uygulamasında libclang kullanmaya çalıştığımda garip bir hatayla karşılaştım.Qt
test.cpp
#include <QApplication>
#include <QMainWindow>
#include <clang-c/Index.h>
int main (int argc, char *argv[]) {
QApplication a(argc, argv);
QMainWindow w;
w.show();
CXIndex index = clang_createIndex(0, 0);
Q_UNUSED(index)
return a.exec();
}
test.pro
QT += core widgets
TARGET = test
TEMPLATE = app
SOURCES += test.cpp
LIBS += -lclang
Kabuk sahip ve çıkışı:
$ ls
test.cpp test.pro
$ qmake
$ make
g++ -c -pipe -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/qt/mkspecs/linux-g++ -I. -I/usr/include/qt -I/usr/include/qt/QtWidgets -I/usr/include/qt/QtGui -I/usr/include/qt/QtCore -I. -o test.o test.cpp
g++ -Wl,-O1,--sort-common,--as-needed,-z,relro -Wl,-O1 -o test test.o -lclang -lQt5Widgets -lQt5Gui -lQt5Core -lGL -lpthread
$ ./test
Two passes with the same argument (-alloca-hoisting) attempted to be registered!
Segmentation fault
el qmake kullanmadan g ++ çalıştırmak için, bir aynı hatayı al:
- ben program derler ve onu gösterilen penceresiz ana döngüye girer bile çalışır
w.show();
satır yorum yaparsanız. CXIndex index = clang_createIndex(0, 0);
veQ_UNUSED(index)
satırlarına yorum yaparsam, program derler ve çalışır. Pencere görünürken ana döngüye girer.- Ayrıca bunu clang ile derledim ve aynı hata iletisini alıyorum.
- Web'de arama yaptım ve benzer bir hata iletisiyle yalnızca bu sonucu buldum, ancak bana nasıl yardımcı olabileceğini ve nasıl yardımcı olabileceğini bilmiyorum: http://comments.gmane.org/gmane.comp.compilers.llvm.devel/34647. Ben Qt 5.1 ve Arch Linux kullanıyorum
, ben libclang başlıkları ve dosyalar /usr/lib/libclang.so ve /usr/lib/libclang.a içerir clang
paketini (sürüm 3.3) yüklü.
Bu programın çalışmaz olmasının nedeni nedir ve nasıl giderebilirim?
Güncelleme: Ben this page buldum. Çalışıyor LIBGL_ALWAYS_INDIRECT=1 ./test
iyi çalışıyor, ama bundan daha fazlasını istiyorum. Programımı çalıştırabilmek için o ortam değişkenini ayarlamamalıydım.
-lcr'yi -lGL'den koymaya çalışın. Bazen garip linker sorunları, yanlış sıraya sahip olmaktan kaynaklanır. Mesa, shader'lar için LLVM kullanmaktadır, bu sizin sorununuzun kaynağı olabilir – Spudd86
Bu yardımcı olabilir http://llvm.org/bugs/show_bug.cgi?id=6801 – Spudd86
@ Spudd86 denedim g ++ -fPIE test.cpp -o -I/usr/include/qt -I/usr/include/qt/QtWidgets -lGL -lQt5Widgets -lclang' ve aynı çalışma zamanı hatasını alıyorum. – silviubogan