Как включить сборку совместно используемой библиотеки при использовании CMake для LLVM? - PullRequest
6 голосов
/ 19 марта 2011

Проблема: Ubuntu 10.10 не поддерживает модули LLVM CMake (/usr/share/llvm) или (/usr/local/share/llvm) при установке LLVM 2.8 из репозиториев Ubuntu.

Так что ясейчас я сам компилирую LLVM 2.8, используя CMake, а затем устанавливаю его так:

cmake ..
make
make install

Это установит модули CMake, которые мне нужны, чтобы связать LLVM в мою библиотеку.Проблема в том, что когда я компилирую LLVM с использованием CMake, компилируются только статические библиотеки.Я видел в документации LLVM, что вы можете скомпилировать совместно используемые библиотеки, используя этот параметр в CMake:

cmake -DBUILD_SHARED_LIBS=true ..

Но теперь CMake возвращает эту ошибку:

-- Target triple: i686-pc-linux-gnu
-- Native target architecture is X86
-- Threads enabled.
-- Building with -fPIC
-- Targeting Alpha
-- Targeting ARM
-- Targeting Blackfin
-- Targeting CBackend
-- Targeting CellSPU
-- Targeting CppBackend
-- Targeting Mips
-- Targeting MBlaze
-- Targeting MSP430
-- Targeting PIC16
-- Targeting PowerPC
-- Targeting Sparc
-- Targeting SystemZ
-- Targeting X86
-- Targeting XCore
-- Configuring done
CMake Error: The inter-target dependency graph contains the following strongly connected component (cycle):
  "LLVMARMCodeGen" of type SHARED_LIBRARY
    depends on "LLVMARMAsmPrinter"
  "LLVMARMAsmPrinter" of type SHARED_LIBRARY
    depends on "LLVMARMCodeGen"
At least one of these targets is not a STATIC_LIBRARY.  Cyclic dependencies are allowed only among static libraries.
-- Build files have been written to: /llvm-2.8/build

И я не могу скомпилировать еекак общая библиотека, кто-нибудь знает, как решить эту проблему?Мне нужны разделяемые библиотеки, потому что они зависят от многих других инструментов.

Резюме

1) LLVM 2.8 из репозитория Ubuntu устанавливает разделяемые библиотеки LLVM, но не устанавливает нужные мне модули CMake.

2) С другой стороны, если я сам компилирую LLVM, он устанавливает нужные мне модули CMake, но я могу сделать это только при компиляции LLVM в качестве статической библиотеки.

Ответы [ 3 ]

4 голосов
/ 19 марта 2011

После долгих исследований (google, source и llvmdev mail-list) я обнаружил, что эта проблема на самом деле является проблемой в выпуске 2.8, компиляция общих библиотек с использованием CMake в этом выпуске не работает.Я портирую свою библиотеку на версию 2.9rc1, которая работает нормально и уже скоро должна быть выпущена, спасибо за все ответы.

1 голос
/ 19 марта 2011

LLVM 2.8 документация не упоминает сборку с CMake.

Попробуйте ./configure --enable-shared

0 голосов
/ 19 марта 2011

Попробуйте прочитать эту страницу , а затем спросите в списке llvmdev , если это не поможет.

...