के साथ libclang का उपयोग नहीं कर सकता है जब मैंने एक क्यूटी अनुप्रयोग में libclang का उपयोग करने की कोशिश की तो मुझे एक अजीब बग का सामना करना पड़ा।क्यूटी
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
शैल कमांड और आउटपुट:
$ 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
अगर मैं मैन्युअल qmake का उपयोग किए बिना जी ++ चलाने के लिए, मैं एक ही त्रुटि प्राप्त करें:
- अगर मैं
w.show();
लाइन कार्यक्रम संकलित करता है तथा भले ही यह पता चला खिड़की के बिना मुख्य पाश में प्रवेश चलाता टिप्पणी। - यदि मैं
CXIndex index = clang_createIndex(0, 0);
औरQ_UNUSED(index)
लाइनों पर टिप्पणी करता हूं, तो प्रोग्राम संकलित और चलाता है। यह खिड़की के दृश्य के साथ मुख्य पाश में प्रवेश करता है। - मैंने इसे क्लैंग के साथ भी संकलित किया और मुझे एक ही त्रुटि संदेश मिलता है।
- मैंने वेब की खोज की और मुझे केवल एक ही त्रुटि संदेश के साथ यह परिणाम मिला लेकिन मुझे नहीं पता कि यह मेरी मदद कैसे कर सकता है: http://comments.gmane.org/gmane.comp.compilers.llvm.devel/34647।
मैं क्यूटी 5.1 और ArchLinux उपयोग कर रहा हूँ, मैं clang
पैकेज (संस्करण 3.3) स्थापित जिसमें शामिल libclang हेडर और फ़ाइलों /usr/lib/libclang.so और /usr/lib/libclang.a है।
यह कारण क्यों है कि यह प्रोग्राम काम नहीं करता है और मैं इसे कैसे ठीक कर सकता हूं?
अद्यतन: मैं this page पाया है। LIBGL_ALWAYS_INDIRECT=1 ./test
चल रहा है अच्छी तरह से काम करता है, लेकिन मुझे इससे अधिक चाहिए। मुझे अपने पर्यावरण को चलाने में सक्षम होने के लिए उस पर्यावरण चर को सेट नहीं करना चाहिए।
-एलजीएल के बाद -lclang डालने का प्रयास करें। कभी-कभी अजीब लिंकर मुद्दे गलत क्रम में चीजें होने के कारण होते हैं। मेसा शेडर्स के लिए एलएलवीएम का उपयोग करता है ताकि आपकी समस्या का स्रोत हो सकता है – Spudd86
यह सहायक हो सकता है http://llvm.org/bugs/show_bug.cgi?id=6801 – Spudd86
@ Spudd86 मैंने कोशिश की 'g ++ -fPIE test.cpp -o परीक्षण- I/usr/शामिल/qt -I/usr/शामिल/qt/QtWidgets -lGL -lQt5Widgets -lclang' और मुझे एक ही रनटाइम त्रुटि मिलती है। – silviubogan