llvm-ar
архивирует несколько файлов битовых кодов LLVM в одну архивную библиотеку, которая может быть связана с программой. Операция архивирования работает как положено. Также можно использовать llvm-nm
для отображения всех символов в сгенерированном архиве.
Однако я заметил, что сгенерированный архив не может использоваться другими стандартными инструментами llvm, например, llc
, lli
и llvm-link
напрямую.
Чтобы использовать сгенерированный заархивированный файл, я должен извлечь все файлы битовых кодов из заархивированного файла и затем использовать их напрямую с помощью llc
.
Вопросы:
Есть ли более элегантный или эффективный способ использования сгенерированного заархивированного файла с помощью llvm-ar
?
Можно ли использовать битовый код, заархивированный файл напрямую, как показано ниже:
// assumes hello.bc is valid bitcode file and it is built successfully
clang-3.8 -o main main.c hello.bc
// ar hello.bc into lib libhello.bca
llvm-ar-3.8 rcs libhello.bca hello.bc
llvm-nm libhello.bca // has below output
hello.bc:
---------------- T outupt
U puts
clang-3.8 -o main main.c libhello.bca // has below error
libhello.bca: error adding symbols: File format not recognized
clang: error: linker command failed with exit code 1 (use -v to see invocation)