Я создал несколько классов, которые я хочу использовать с swig, чтобы создать привязку ruby. Все нормально, когда я генерирую код или компилирую модуль ruby. Но когда скрипт загружает этот модуль, возникает ошибка:
undefined symbol: _ZTVN5clang5LexerE
Я понимаю, что это означает, что проблема заключается в clang :: Lexer. Но я знаю, что я установил lclangLex lib для этого.
вот команда, которую я использую, чтобы связать файлы объектов:
clang++ -shared -o parser.so parser.o Declarations.o -L. -L/usr/lib -L. -Wl,-O1,\
--sort-common,--as-needed,-z,relro -fstack-protector -rdynamic -Wl,-export-dynamic \
-L/usr/lib -lz -lpthread -lffi -lcurses -ldl -lm -lruby -lclangLex -lclangAST \
-lpthread -lgmp -ldl -lcrypt -lm -lc -lLLVMCppBackendCodeGen -lLLVMCppBackendInfo \
-lLLVMTarget -lLLVMCore -lLLVMMC -lLLVMObject -lLLVMSupport
Есть идеи?
Проблема заключалась в том, что libs предоставлен компоновщику:
-lclangAST -lclangLex -lclangBasic
lclangAST должен быть указан до lclangLex, тогда мне просто нужно было добавить lclangBasic, и все работает.