Я пытаюсь написать простую проверку синтаксиса для кода C, используя интерфейс, доступный в libclang. Из-за проблем с развертыванием мне нужно иметь возможность статически связывать все библиотеки в libclang, а не передавать файл .so со всеми библиотеками.Статическое связывание libclang в коде C
Я строю clang/llvm из источника, а в llvm/Release + Asserts/lib У меня есть куча файлов .a, которые, я думаю, я должен использовать, но он никогда не работает (компоновщик извергает тысячи ошибок о недостающих символах). Однако, когда я скомпилировать его с помощью libclang.so также присутствует в этом каталоге следующим образом:
clang main.c -o bin/dlc -I../llvm/tools/clang/include -L../llvm/Release+Asserts/lib/ -lclang
Все, кажется, работает хорошо.
Каков минимальный набор файлов .a, которые мне нужно включить, чтобы сделать эту работу? Я попытался включить абсолютно все файлы .a в каталог вывода сборки, причем они были предоставлены clang/gcc в разных заказах без каких-либо успехов. Мне нужны только функции, упомянутые в index.h libclang, но, похоже, нет никаких ресурсов или документации о том, для чего предназначены различные файлы libclang * .a. Было бы очень полезно узнать, какие файлы libclang.so втягивает.
Что делать, если вы добавляете '-статический' в флаги компоновщика? – 2013-02-09 08:13:06
Я попытался НКУ -static -lstatic1 -lstatic2 -Wl, -ldynamic1 -ldyanamic2 , как показано в [ссылка] (http://stackoverflow.com/questions/4156055/gcc-static-linking-only- некоторые библиотеки) , чтобы не статически ссылаться на все libc (что я могу связать динамически). Однако, похоже, это вообще не помогает, поскольку мне все еще нужно знать, какие файлы .a необходимы. –
kfc9001
О, я вижу. На какие символы ссылается линкер? – 2013-02-09 08:17:11