Как установить предварительно созданные двоичные файлы clang ubuntu 12.04 - программирование

Как установить предварительно созданные двоичные файлы clang ubuntu 12.04

Я очень новичок в Linux и не знаю, где мне нужно поставить готовые двоичные файлы Clang http://llvm.org/releases/download.html#3.3. Я загружаю его, распаковываю с помощью мыши и добавляю путь к /bin в мой $PATH и путь к /lib в $LD_LIBRARY_PATH и добавляю *.conf с указанием пути к my/lib в /etc/ld.so.conf.d, Я даже перезагружу свой ноутбук.
... но все же не могу создать мою простую программу с помощью Code:: Blocks GCC (ошибка:/home/aadgrand/tmp/LLVM-3.3/final/llvm.src/lib/Support/Signals.cpp - undefined ссылка на ` dladdr '). Текст тестовой программы:

#include <iostream>
#include "llvm/IR/Module.h"
#include "llvm/IR/LLVMContext.h"
using namespace std;

int main()
{
    llvm::LLVMContext &c = llvm::getGlobalContext(); // error line
    cout << "Never printed" << endl;
    return 0;
}

Что мне еще нужно делать? Может быть, мне нужно использовать *.sig файл? Хм?

Тот же вопрос, что и Как установить CLang с использованием предварительно скомпилированных двоичных файлов?. Извините за повторение, но это действительно очень интересно и важно.

===== ОБНОВЛЕНО ======

Я только что отказался от llvm-3.1, такую ​​же ошибку, как с llvm-3.4 (из предварительно созданных двоичных файлов):

-------------- Build: Debug in test2 ---------------

Compiling: main.cpp
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 
COLLECT_GCC_OPTIONS='-std=c++98' '-pg' '-g' '-v' '-Wall' '-fexceptions' '-I' '/usr/lib/llvm-3.1/include' '-c' '-o' 'obj/Debug/main.o' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/4.6/cc1plus -quiet -v -I /usr/lib/llvm-3.1/include -imultilib . -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /home/kpdev/projects/test2/test2/main.cpp -quiet -dumpbase main.cpp -mtune=generic -march=x86-64 -auxbase-strip obj/Debug/main.o -g -Wall -std=c++98 -version -p -fexceptions -fstack-protector -o /tmp/ccbKoBDJ.s
GNU C++ (Ubuntu/Linaro 4.6.3-1ubuntu5) version 4.6.3 (x86_64-linux-gnu)
    compiled by GNU C version 4.6.3, GMP version 5.0.2, MPFR version 3.1.0-p3, MPC version 0.9
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../x86_64-linux-gnu/include"
    #include "..." search starts here:
    #include <...> search starts here:
 /usr/lib/llvm-3.1/include
 /usr/include/c++/4.6
 /usr/include/c++/4.6/x86_64-linux-gnu/.
 /usr/include/c++/4.6/backward
 /usr/lib/gcc/x86_64-linux-gnu/4.6/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
GNU C++ (Ubuntu/Linaro 4.6.3-1ubuntu5) version 4.6.3 (x86_64-linux-gnu)
    compiled by GNU C version 4.6.3, GMP version 5.0.2, MPFR version 3.1.0-p3, MPC version 0.9
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 65b5171ac1bd7b3f07dbea6bdb24be3d
/home/kpdev/projects/test2/test2/main.cpp: In function ‘int main()’:
/home/kpdev/projects/test2/test2/main.cpp:11:24: warning: unused variable ‘c’ [-Wunused-variable]
COLLECT_GCC_OPTIONS='-std=c++98' '-pg' '-g' '-v' '-Wall' '-fexceptions' '-I' '/usr/lib/llvm-3.1/include' '-c' '-o' 'obj/Debug/main.o' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
 as --64 -o obj/Debug/main.o /tmp/ccbKoBDJ.s
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-std=c++98' '-pg' '-g' '-v' '-Wall' '-fexceptions' '-I' '/usr/lib/llvm-3.1/include' '-c' '-o' 'obj/Debug/main.o' '-shared-libgcc' '-mtune=generic' '-march=x86-64'



Linking console executable: bin/Debug/test2
/usr/lib/llvm-3.1/lib/libLLVMSupport.a(Signals.o): In function `PrintStackTrace(void*)':
(.text+0x6c): undefined reference to `dladdr'
/usr/lib/llvm-3.1/lib/libLLVMSupport.a(Signals.o): In function `PrintStackTrace(void*)':
(.text+0x187): undefined reference to `dladdr'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
2 errors, 1 warnings


||=== Build finished: 2 errors, 1 warnings ===|
4b9b3361

Ответ 1

Название вашего вопроса ввело в заблуждение и меня, и Атропо. Было похоже, что вы хотите установить компилятор Clang Cang и создать llvm С++ с ним в Code:: Blocks.

То, что вы на самом деле пытаетесь сделать, это установить clang + llvm (они на самом деле разные вещи) и построить llvm-программу с GCC в блоках Code::. Вы сказали "Code:: Blocks GCC", но я предположил, что это просто означает "У меня был Code:: Blocks, настроенный с GCC, и теперь я хочу использовать clang". Журнал сборки C:: B что вы добавили, однако, показывает, что вы строите с помощью GCC.

Учитывая, что вы создаете свою программу llvm с помощью GCC, неясно, почему вы хотите установить компилятор clang. Возможно, вы хотите использовать clang, но вы не знаю, что Code:: Blocks может поддерживать компилятор clang или не знает, как настройте C:: B, чтобы использовать clang. Но позвольте принять во внимание одно. Вы можете построить эта программа llvm с gcc, если вы просто правильно настроите настройки. А также - отдельный вопрос - вы можете установить clang правильно. А также - еще одна отдельная проблема - вы можете настроить C:: B для сборки с помощью clang, если хотите.

Вложенные команды Atropo для установки последних clang и его отладчик lldb. Но clang не нуждается во всех библиотеках llvm и установка только clang и lldb не дает вам всех библиотек, которые вам нужны для создайте свою программу llvm.

Вы сказали в одном из своих комментариев, что вы смогли создать свою программу с clang++ в терминале. Это говорит о том, что в этот момент ручная установка clang и llvm. Но я не знаю, есть ли у вас вмешательство вовремя, и в любом случае я согласен с Atropo в том, что вручную установка такого сложного программного обеспечения - настройка ваших PATH и LD_LIBRARY_PATH и т.д. - гораздо менее разумно, чем управляемая установка из пакета repoository, позволяя менеджеру пакетов получить все правильно.

Сначала создайте свою программу llvm с помощью gcc в C:: B, и для этого начните с некоторых меры предосторожности, которые могут быть или не быть необходимыми:

  • Отмените эту настройку и удалите или скройте вручную установленные бинарные файлы clang/llvm.

  • Обновите все свои пакеты. В консоли запустите:

    sudo apt-get update

  • Убедитесь, что у вас есть все базовые пакеты для создания программного обеспечения C/С++. в консоль, запустить:

    sudo apt-get install build-essential

Это завершает меры предосторожности. Далее:

  • Установите llvm из стандартного репозитория ubuntu 12.04. Вы получите старую one, v2.9, но на данный момент это прекрасно:

    sudo apt-get install llvm

Теперь у вас есть все необходимое программное обеспечение. Держите эту консоль удобной и запущенной C:: B в вашем простом проекте llvm.

  • Поскольку у вас теперь есть стандартная системная установка llvm, измените вторую #include директивы исходного кода на следующее:

    #include <llvm/Module.h>

    #include <llvm/LLVMContext.h>

  • Получить llvm, чтобы рассказать вам, какие параметры компилятора необходимо передать GCC. в консольный запуск:

    llvm-config --cxxflags

  • Скопируйте вывод этой команды из консоли в буфер обмена. В C:: B, откройте свой проект Параметры сборки и перейдите в Настройки компилятора → Другие параметры для GCC. В поле "Другие варианты" вставьте параметры компилятора из в буфер обмена и ОК.

  • Получить llvm, чтобы рассказать вам, какие библиотеки вам нужно связать. в консольный запуск:

    llvm-config --libs

  • Скопируйте вывод этой команды из консоли в буфер обмена (на этот раз его много). В C:: B перейдите к параметрам Build → Настройки компоновщика → Другие варианты компоновщика. В поле редактирования вставьте параметры библиотеки из буфера обмена и ОК.

  • Получить llvm, чтобы рассказать вам, какие (другие) параметры вам нужно передать в компоновщик. в консольный запуск:

    llvm-config --ldflags

  • Скопируйте вывод этой команды из консоли в буфер обмена. В C:: B, снова перейдите, Параметры сборки → Настройки компоновщика → Другие варианты компоновщика В поле редактирования, после - повторить, после - параметры библиотеки, которые вы ранее вставляли туда, вставьте дополнительные параметры компоновщика из буфера обмена и ОК.

  • Теперь перестройте свой проект, и на этот раз он будет компилироваться и связываться только с только предупреждение для неиспользуемой переменной c (по крайней мере, для меня).

Что касается создания вашей программы. Если вы сейчас запустите его, он выведет "Никогда не печатал", который, я думаю, вы этого не хотите; но это проблема для вас:) Он строит и запускает.

Если вы также хотите установить все последние пакеты llvm и clang, читайте дальше.

  • Установите репозиторий llvm toolchain для Ubuntu 12.04 в ваших источниках программного обеспечения

    sudo add-apt-repository 'deb http://llvm.org/apt/precise/ llvm-toolchain-precise main'

  • Установите ключ gpg этого репозитория для проверки подлинности пакетов из него. Заметка окончательный дефис в этой командной строке:

    wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key|sudo apt-key add -

  • Обновите свою базу данных пакетов еще раз:

    sudo apt-get update

  • Установите всю инструментальную цепочку llvm + clang:

    sudo apt-get install clang-3.4 clang-3.4-doc libclang-common-3.4-dev libclang-3.4-dev libclang1-3.4 libclang1-3.4-dbg libllvm-3.4-ocaml-dev libllvm3.4 libllvm3.4-dbg lldb-3.4 llvm-3.4 llvm-3.4-dev llvm-3.4-doc llvm-3.4-examples llvm-3.4-runtime cpp11-migrate-3.4 clang-format-3.4

  • Докажите, что у вас есть clang 3.4:

    clang -v

Эта команда должна выводить:

Ubuntu clang version 3.4-1~exp1 (trunk) (based on LLVM 3.4)
Target: x86_64-pc-linux-gnu
Thread model: posix

Наконец, вы можете настроить C:: B для использования clang вместо GCC. я буду просто запустите.

  • В C:: B перейдите к настройкам компилятора для GCC и нажмите кнопку "Копировать". В поле "Добавить новый компилятор" введите clang-3.4 и нажмите "ОК". затем следуйте подсказке о том, что C:: B дает вам возможность обновить страницу "Исходные файлы Toolchain".

Ответ 2

Вместо ручной установки вы можете использовать репозиторий LLVM, добавить его в свои источники apt и установить его через apt-get или в менеджер пакетов Ubuntu. См. LLVM apt repo о том, как это сделать.

Выполняйте шаги, указанные в параграфе "Установка", в терминале:

sudo wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key | sudo apt-key add -

sudo apt-get install clang-3.4 lldb-3.4