связывание clang lib всегда неопределенный символ

0

Я создал несколько классов, которые я хочу использовать с 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

Есть идеи?

  • 0
    Я думаю, что вы динамически связываетесь с clang, и вы должны загрузить libclang.so во время выполнения, которое предоставляет эту функцию.
  • 0
    Да, этот модуль динамически связан с Clang. Но я не понимаю, что вы хотите сказать мне: «вы должны загрузить libclang.so во время выполнения»
Теги:
clang
swig
compiler-construction

1 ответ

0
Лучший ответ

Проблема заключалась в том, что libs предоставлен компоновщику:

-lclangAST -lclangLex -lclangBasic 

lclangAST должен быть указан до lclangLex, тогда мне просто нужно было добавить lclangBasic, и все работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню