сборка Clang

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

сборка Clang

Непрочитанное сообщение Olej » 03 апр 2013, 09:55

Эта тема - некоторое ответвление уже существовавшей темы: Clang.
Вот начиная от этого места - где и что взять, и что дальше с ним делать:
Olej писал(а):
Olej писал(а): Ох, что-то мне подсказывает, что нужно сносить нафиг все репозитарные пакеты RPM (и то же самое в любом дистрибутиве Linux) и ставить всё это из исходников:
- LLVM;
- Clang;
- libc++;
1. http://llvm.org/releases/download.html#3.2
Это LLVM + Clang последней релизной версии 3.2
LLVM source code (12M) (.sig)
LLVM Test Suite (69M) (.sig)
Clang source code (8.4M)(.sig)
Compiler RT source code (1.4M)(.sig)
Clang Binaries for FreeBSD9/x86_64 (69M)(.sig)
Clang Binaries for MacOS X/x86_64 (67M)(.sig)
Clang Binaries for Ubuntu-12.04/x86 (67M)(.sig)
Clang Binaries for Ubuntu-12.04/x86_64 (71M)(.sig)
Experimental Clang Binaries for Mingw32/x86 (85)(.sig)
DragonEgg(650K) (.sig)
Polly(396K) (.sig)
2. http://clang.llvm.org/get_started.html
Это детальная инструкция (с URL) установки последней версии LLVM + Clang из SVN репозитария.

3. http://libcxx.llvm.org/
libc++ есть (или я нашёл?) только из SVN репозитария, здесь подробнейшая инструкция.
Но это уже чисто технические аспекты сборки из исходников, и сборки не только Clang (как в заголовке), а всех компонент: а). LLVM, б). Clang, в). библиотеки libc++.

Проект не простой, не ординарный, и здесь я планирую протоколировать для себя журнал операций по сборке.
Может ещё кому окажется полезным.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: сборка Clang

Непрочитанное сообщение Olej » 03 апр 2013, 20:03

Olej писал(а):Проект не простой, не ординарный, и здесь я планирую протоколировать для себя журнал операций по сборке.
Может ещё кому окажется полезным.
Я буду излишне подробно комментировать протокол сборки ... потому, что пообещал ;-) в соседней теме Помогите научиться устанавливать программы из исходного кода на примере показать сборку из исходников ... вместо того, чтобы 10 раз рассказывать.
(если кому эти комментарии будут излишне подробные и нудные - вы их пропускайте)

Итак, ... поехали!

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: сборка Clang

Непрочитанное сообщение Olej » 03 апр 2013, 20:19

Olej писал(а):Итак, ... поехали!
Сначала я соберу релизную версию 3.2 ... а потом пересоберу trunk версию из SVN, которая релиз-кандидат 3.3 (гулять так гулять ;-) ).

Скачали отсюда:
Olej писал(а): 1. http://llvm.org/releases/download.html#3.2
Это LLVM + Clang последней релизной версии 3.2
LLVM source code (12M) (.sig)
LLVM Test Suite (69M) (.sig)
Clang source code (8.4M)(.sig)
Compiler RT source code (1.4M)(.sig)
Clang Binaries for FreeBSD9/x86_64 (69M)(.sig)
Clang Binaries for MacOS X/x86_64 (67M)(.sig)
Clang Binaries for Ubuntu-12.04/x86 (67M)(.sig)
Clang Binaries for Ubuntu-12.04/x86_64 (71M)(.sig)
Experimental Clang Binaries for Mingw32/x86 (85)(.sig)
DragonEgg(650K) (.sig)
Polly(396K) (.sig)

Код: Выделить всё

bash-4.2$ ls -l *.tar.gz
-rw-rw-r-- 1 olej olej  8805311 апр.   2 19:36 clang-3.2.src.tar.gz
-rw-rw-r-- 1 olej olej  1463061 апр.   2 19:35 compiler-rt-3.2.src.tar.gz
-rw-rw-r-- 1 olej olej 12275252 апр.   2 19:35 llvm-3.2.src.tar.gz
-rw-rw-r-- 1 olej olej 72707160 апр.   2 19:38 test-suite-3.2.src.tar.gz
Собирать буду в специально на то созданном каталоге $HOME/LLVM - туда и разархивирую .tar.gz:

Код: Выделить всё

bash-4.2$ ls -l | grep .src
drwxr-xr-x 14 olej olej 4096 дек.  19 19:14 clang-3.2.src
drwxr-xr-x 11 olej olej 4096 дек.  19 19:14 compiler-rt-3.2.src
drwxr-xr-x 15 olej olej 4096 апр.   3 12:43 llvm-3.2.src
drwxr-xr-x 11 olej olej 4096 дек.  19 19:14 test-suite-3.2.src
bash-4.2$ du -hs
1,2G	.
du я показал уже после сборки ... но к тому, что запас нужно заранее иметь.

Пользуясь подсказками со странички сборки из SVN (но пользоваться аккуратно! - только "по мотивам") размещаем каталоги Clang & compiler-rt внутри дерева исходников llvm-3.2.src:

Код: Выделить всё

bash-4.2$ pwd
/home/olej/LLVM
bash-4.2$ cp -R clang-3.2.src llvm-3.2.src/tools/clang
bash-4.2$ cp -R compiler-rt-3.2.src llvm-3.2.src/projects/compiler-rt
Вот теперь всё готово для ./configure ...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: сборка Clang

Непрочитанное сообщение Olej » 03 апр 2013, 20:29

Olej писал(а):Вот теперь всё готово для ./configure ...
И вот тут 1-е место при сборке, когда нужно чуть погодить...
Почти всегда полезно прежде посмотреть:

Код: Выделить всё

bash-4.2$ cd llvm-3.2.src
bash-4.2$ ./configure --help
`configure' configures LLVM 3.2svn to adapt to many kinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.
...
By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc.  You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.
...
Some influential environment variables:
  CC          C compiler command
  CFLAGS      C compiler flags
  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard directory <lib dir>
  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
              you have headers in a nonstandard directory <include dir>
  CXX         C++ compiler command
  CXXFLAGS    C++ compiler flags
  CPP         C preprocessor
...
Почти всегда стоит сильно подумать над --prefix=...
У меня в прежней установке Clang 3.0 в Fedora 17 из их было репозитария (я уже его снёс):

Код: Выделить всё

bash-4.2$ clang --version
clang version 3.0 (tags/RELEASE_30/final)
Target: i386-redhat-linux-gnu
Thread model: posix
bash-4.2$ which clang
/usr/bin/clang

Вот туда в привычное для Fedora место я и буду устанавливать, поэтому --prefix=/usr

Очень интересные переменные окружения CC и CXX - пользуясь ними я могу собирать Clang либо через GCC, либо раскруткой через сам компилятор Clang ... но это я оставляю на позже.

Вот теперь можно и:

- создать рядом каталог сборки, чтобы не портить каталог исходников:

Код: Выделить всё

bash-4.2$ pwd
/home/olej/LLVM
bash-4.2$ mkdir build
bash-4.2$ cd build/
- и вот теперь ./configure :

Код: Выделить всё

bash-4.2$ time ../llvm-3.2.src/configure --prefix=/usr
...
checking for clang... no
checking for llvm-gcc... no
checking for gcc... gcc
checking for C compiler default output file name... a.out
...
configure: creating ./config.status
config.status: creating Makefile.common
config.status: creating Makefile.llvm.config
config.status: executing setup commands
config.status: executing Makefile commands
config.status: executing lib/Makefile commands
config.status: executing lib/sample/Makefile commands
config.status: executing tools/Makefile commands
config.status: executing tools/sample/Makefile commands

real    0m42.952s
user    0m17.680s
sys     0m12.630s
Команды ./cinfigure, make, реже make install - рекомендую всегда запускать через time, чтобы в следующий раз вы прогнозировали время, которое это затребует.

Это у меня все сборки делаются не на самом быстром процессор, но и не так, чтобы совсем тормознутый:

Код: Выделить всё

bash-4.2$ cat /proc/cpuinfo | grep 'model name'
model name      : Genuine Intel(R) CPU           T2300  @ 1.66GHz
model name      : Genuine Intel(R) CPU           T2300  @ 1.66GHz

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: сборка Clang

Непрочитанное сообщение Olej » 03 апр 2013, 20:41

Olej писал(а): - и вот теперь ./configure :
Вот здесь, после ./configure - 2-е место, когда лучше не спешить, а сделать паузу, позаглядывать в Makefile который произвёл ./configure, посмотреть какие цели там созданы :
- есть ли кроме цели install цель uninstall - очень полезно...
- часто бывает цель rpm или что-то подобное - создание пакета проекта...
- временами бывает цель menuconfig - запустить перед make для конфтгурирования...
- часто бывает цель help или подобная - поясняющая возможности...
Не пренебрегайте!

А теперь можно и в компиляцию идти:

Код: Выделить всё

bash-4.2$ time make
...
llvm[3]: Compiling SparcISelLowering.cpp for Release+Asserts build
llvm[3]: Compiling SparcInstrInfo.cpp for Release+Asserts build
llvm[3]: Compiling SparcMachineFunctionInfo.cpp for Release+Asserts build
llvm[3]: Compiling SparcRegisterInfo.cpp for Release+Asserts build
llvm[3]: Compiling SparcSelectionDAGInfo.cpp for Release+Asserts build
llvm[3]: Compiling SparcSubtarget.cpp for Release+Asserts build
llvm[3]: Compiling SparcTargetMachine.cpp for Release+Asserts build
llvm[3]: Building Release+Asserts Archive Library libLLVMSparcCodeGen.a
make[4]: Вход в каталог `/home/olej/LLVM/build/lib/Target/Sparc/TargetInfo'
llvm[4]: Compiling SparcTargetInfo.cpp for Release+Asserts build
llvm[4]: Building Release+Asserts Archive Library libLLVMSparcInfo.a
make[4]: Выход из каталога `/home/olej/LLVM/build/lib/Target/Sparc/TargetInfo'
make[4]: Вход в каталог `/home/olej/LLVM/build/lib/Target/Sparc/MCTargetDesc'
llvm[4]: Compiling SparcMCAsmInfo.cpp for Release+Asserts build
llvm[4]: Compiling SparcMCTargetDesc.cpp for Release+Asserts build
llvm[4]: Building Release+Asserts Archive Library libLLVMSparcDesc.a
make[4]: Выход из каталога `/home/olej/LLVM/build/lib/Target/Sparc/MCTargetDesc'
make[3]: Выход из каталога `/home/olej/LLVM/build/lib/Target/Sparc'
make[3]: Вход в каталог `/home/olej/LLVM/build/lib/Target/PowerPC'
llvm[3]: Building PPC.td register info implementation with tblgen
llvm[3]: Building PPC.td assembly writer with tblgen
llvm[3]: Building PPC.td code emitter with tblgen
llvm[3]: Building PPC.td instruction information with tblgen
llvm[3]: Building PPC.td DAG instruction selector implementation with tblgen
llvm[3]: Building PPC.td subtarget information with tblgen
llvm[3]: Building PPC.td calling convention information with tblgen
...
llvm[3]: Building ARM.td register info implementation with tblgen
llvm[3]: Building ARM.td instruction information with tblgen
llvm[3]: Building ARM.td assembly writer with tblgen
llvm[3]: Building ARM.td assembly matcher with tblgen
llvm[3]: Building ARM.td DAG instruction selector implementation with tblgen
...
make[1]: Выход из каталога `/home/olej/LLVM/build/bindings'
llvm[0]: ***** Completed Release+Asserts Build

real    100m28.336s
user    95m5.388s
sys     3m43.828s
1. вот для чего time ! : 100 мин. компиляции на 1.6Ghz в 2 ядра - это вам не "Hello world!" компилировать.

2. удивительно (?), но Clang, похоже, собирает кодогенераторы для всех аппаратных платформ, которые он знает (GCC, как я помню, каждый раз собирается для 1-й платформы).

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: сборка Clang

Непрочитанное сообщение Olej » 03 апр 2013, 20:44

Olej писал(а): А теперь можно и в компиляцию идти:
Ну и установка:

Код: Выделить всё

bash-4.2$ sudo make install
llvm[0]: Installing include files
...
make[1]: Выход из каталога `/home/olej/LLVM/build/bindings'
bash-4.2$
(make почти всегда можно делать от имени своего пользователя, но make install нужно делать как root)

Проверяем:

Код: Выделить всё

bash-4.2$ which clang
/usr/bin/clang
bash-4.2$ clang --version
clang version 3.2 (tags/RELEASE_32/final)
Target: i386-pc-linux-gnu
Thread model: posix
Не хуже, чем в Fedora 17 ;-) ... и даже лучше (что сейчас увидим)...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: сборка Clang

Непрочитанное сообщение Olej » 03 апр 2013, 20:54

Olej писал(а): Не хуже, чем в Fedora 17 ;-) ... и даже лучше (что сейчас увидим)...
Проверяю на простейших тестовых задачах (которые раньше показывал), сборка ANSI C и C++ приложений:

Код: Выделить всё

bash-4.2$ make clean
bash-4.2$ make
clang -xc  hello.c -o helloc
clang++ -xc++   hello.cc -o hellocc
Хотите детальней диагностику Clang?

Код: Выделить всё

bash-4.2$ INFO=-v make
clang -xc -v hello.c -o helloc
clang version 3.2 (tags/RELEASE_32/final)
Target: i386-pc-linux-gnu
Thread model: posix
 "/usr/bin/clang" -cc1 -triple i386-pc-linux-gnu -emit-obj -mrelax-all -disable-free -main-file-name hello.c -mrelocation-model static -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -fuse-init-array -target-cpu pentium4 -target-linker-version 2.22.52.0.1 -momit-leaf-frame-pointer -v -resource-dir /usr/bin/../lib/clang/3.2 -fmodule-cache-path /var/tmp/clang-module-cache -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/clang/3.2/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdebug-compilation-dir /home/olej/2013_WORK/examples.others.DRAFT/clang/hello -ferror-limit 19 -fmessage-length 140 -mstackrealign -fobjc-runtime=gcc -fdiagnostics-show-option -fcolor-diagnostics -o /tmp/hello-c7Uyhw.o -x c hello.c
clang -cc1 version 3.2 based upon LLVM 3.2svn default target i386-pc-linux-gnu
ignoring nonexistent directory "/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /usr/bin/../lib/clang/3.2/include
...
и т.д. (или INFO в Makefile раскомментируйте).

Разница в том (с 3.0), что теперь нет необходимости в непонятном _GLIBCXX_ATOMIC_BUILTINS - теперь эта строка закомментирована, и один вопрос снялся:

Код: Выделить всё

#include <cstdlib>
//#undef _GLIBCXX_ATOMIC_BUILTINS
#include <iostream>
(это всё пока - начало, продолжение следует...)
Вложения
hello.tgz
(1.63 КБ) 461 скачивание

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: сборка Clang

Непрочитанное сообщение Olej » 03 апр 2013, 23:42

Библиотеки, которые используют собранные приложения (C и C++, соответственно):

Код: Выделить всё

bash-4.2$ ldd helloc
	linux-gate.so.1 =>  (0xb77cd000)
	libc.so.6 => /lib/libc.so.6 (0x41fb2000)
	/lib/ld-linux.so.2 (0x41f8f000)
bash-4.2$ ldd hellocc
	linux-gate.so.1 =>  (0xb7717000)
	libstdc++.so.6 => /lib/libstdc++.so.6 (0x44f86000)
	libm.so.6 => /lib/libm.so.6 (0x43d4d000)
	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x44f67000)
	libc.so.6 => /lib/libc.so.6 (0x41fb2000)
	/lib/ld-linux.so.2 (0x41f8f000)

Приложение C++ собрано с библиотекой libstdc++ - стандартной библиотекой GCC для C++.
Никаких других библиотек сборка Clang не добавила:

Код: Выделить всё

bash-4.2$ ls -l /lib/*c++*
-rwxr-xr-x. 1 root root 263180 февр.  1  2012 /lib/libstdc++-3-libc6.2-2-2.10.0.so
lrwxrwxrwx. 1 root root     31 авг.   3  2012 /lib/libstdc++-libc6.2-2.so.3 -> libstdc++-3-libc6.2-2-2.10.0.so
lrwxrwxrwx. 1 root root     18 авг.   3  2012 /lib/libstdc++.so.5 -> libstdc++.so.5.0.7
-rwxr-xr-x. 1 root root 733440 февр. 28  2012 /lib/libstdc++.so.5.0.7
lrwxrwxrwx  1 root root     19 марта 24 01:27 /lib/libstdc++.so.6 -> libstdc++.so.6.0.17
-rwxr-xr-x  1 root root 940336 сент. 21  2012 /lib/libstdc++.so.6.0.17
В большинстве своём это ссылки.

Сборка новой библиотека libc++, анонсированной в рамках проекта LLVM:
Olej писал(а): 3. http://libcxx.llvm.org/
libc++ есть (или я нашёл?) только из SVN репозитария, здесь подробнейшая инструкция.
Загрузка исходных кодов из SVN (в любой каталог):

Код: Выделить всё

bash-4.2$ pwd
/home/olej/Загрузки/LLVM/libcxx
bash-4.2$ svn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx
...
 U   libcxx
Checked out revision 178549.
bash-4.2$ du -hs libcxx
128M    libcxx
Смотрим состав - это типичная сборка с помощью Cmake:

Код: Выделить всё

bash-4.2$ ls -l
итого 52
drwxrwxr-x  3 olej olej 4096 апр.   2 20:04 cmake
-rw-rw-r--  1 olej olej 9361 апр.   2 20:04 CMakeLists.txt
-rw-rw-r--  1 olej olej 2198 апр.   2 20:04 CREDITS.TXT
drwxrwxr-x  4 olej olej 4096 апр.   2 20:04 include
drwxrwxr-x  2 olej olej 4096 апр.   2 20:04 lib
-rw-rw-r--  1 olej olej 3493 апр.   2 20:04 LICENSE.TXT
-rw-rw-r--  1 olej olej 1304 апр.   2 20:04 Makefile
drwxrwxr-x  3 olej olej 4096 апр.   2 20:04 src
drwxrwxr-x 17 olej olej 4096 апр.   2 20:05 test
drwxrwxr-x  9 olej olej 4096 апр.   2 20:06 trunk
drwxrwxr-x  2 olej olej 4096 апр.   2 20:04 www
Сборку делаю по рекомендациям на странице (ссылка в цитате), перекраивая их под свою систему...
Но прежде, чем показывать сборку...
На странице написано:
Platform Support
libc++ is known to work on the following platforms, using g++-4.2 and clang (lack of C++11 language support disables some functionality).
Mac OS X i386
Mac OS X x86_64
Относительно Linux идёт отработка, но ничего не гарантируется...
Где-то на сайте есть указание, что отработка делается в Debian.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: сборка Clang

Непрочитанное сообщение Olej » 03 апр 2013, 23:52

Olej писал(а): Сборку делаю по рекомендациям на странице (ссылка в цитате), перекраивая их под свою систему...
Но прежде, чем показывать сборку...
1-й их способ:
Build on Linux using CMake and libsupc++
(libcxx я с SVN уже скачал, выше было показано: как и куда)

Код: Выделить всё

bash-4.2$ echo | g++ -Wp,-v -x c++ - -fsyntax-only
несуществующий каталог "/usr/lib/gcc/i686-redhat-linux/4.7.2/include-fixed" проигнорирован
несуществующий каталог "/usr/lib/gcc/i686-redhat-linux/4.7.2/../../../../i686-redhat-linux/include" проигнорирован
порядок поиска для #include "...":
порядок поиска для #include <...>:
 /usr/lib/gcc/i686-redhat-linux/4.7.2/../../../../include/c++/4.7.2
 /usr/lib/gcc/i686-redhat-linux/4.7.2/../../../../include/c++/4.7.2/i686-redhat-linux
 /usr/lib/gcc/i686-redhat-linux/4.7.2/../../../../include/c++/4.7.2/backward
 /usr/lib/gcc/i686-redhat-linux/4.7.2/include
 /usr/local/include
 /usr/include
Конец списка поиска.
Это только проверка путей ... но они сейчас понадобятся.

В произвольном пустом каталоге:

Код: Выделить всё

bash-4.2$ pwd
/home/olej/LLVM/libcxx
... вот тут самое мудрёное ... но все пути копируются из того, что я уже показывал:

Код: Выделить всё

bash-4.2$ CC=clang CXX=clang++ cmake -G "Unix Makefiles" -DLIBCXX_CXX_ABI=libsupc++ \
> -DLIBCXX_LIBSUPCXX_INCLUDE_PATHS="/usr/include/c++/4.7.2/;/usr/include/c++/4.7.2/i686-redhat-linux/" \
> -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr /home/olej/Загрузки/LLVM/libcxx
-- The CXX compiler identification is Clang 3.2.0
-- The C compiler identification is Clang 3.2.0
-- Check for working CXX compiler: /usr/bin/clang++
-- Check for working CXX compiler: /usr/bin/clang++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working C compiler: /usr/bin/clang
-- Check for working C compiler: /usr/bin/clang -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Host triple: i686-pc-linux
-- Target triple: i686-pc-linux
-- Performing Test LIBCXX_HAS_STDCXX0X_FLAG
-- Performing Test LIBCXX_HAS_STDCXX0X_FLAG - Success
...
-- Found PythonInterp: /usr/bin/python (found version "2.7.3")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/olej/LLVM/libcxx
Всё, дальше можно компилировать:

Код: Выделить всё

bash-4.2$ time make
Scanning dependencies of target abilib_headers
[  3%] Generating include/cxxabi.h
[  6%] Generating include/bits/c++config.h
[ 10%] Generating include/bits/os_defines.h
[ 13%] Generating include/bits/cpu_defines.h
[ 16%] Generating include/bits/cxxabi_tweaks.h
[ 20%] Generating include/bits/cxxabi_forced.h
[ 20%] Built target abilib_headers
Scanning dependencies of target cxx
[ 23%] Building CXX object lib/CMakeFiles/cxx.dir/__/src/memory.cpp.o
...
[ 96%] Building CXX object lib/CMakeFiles/cxx.dir/__/src/thread.cpp.o
[100%] Building CXX object lib/CMakeFiles/cxx.dir/__/src/bind.cpp.o
Linking CXX shared library libc++.so
[100%] Built target cxx

real    0m44.145s
user    0m38.394s
sys     0m1.486s
... и устанавливать:

Код: Выделить всё

bash-4.2$ sudo make install
[ 20%] Built target abilib_headers
[100%] Built target cxx
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/include/c++/v1
-- Installing: /usr/include/c++/v1/cxxabi.h
-- Installing: /usr/include/c++/v1/bits
...
-- Installing: /usr/include/c++/v1/numeric
-- Installing: /usr/include/c++/v1/stack
Ключевое место здесь в том, что сборка должна обязательно делаться Clang, там специфический код, сборка GCC не получится!

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: сборка Clang

Непрочитанное сообщение Olej » 03 апр 2013, 23:56

Olej писал(а): ... и устанавливать:
Проверка теми тестами, которые никак не получались раньше (архив приложен раньше):

Код: Выделить всё

bash-4.2$ make
clang -xc  hello.c -o helloc
clang++ -xc++  -stdlib=libc++ hello.cc -o hellocc

Код: Выделить всё

bash-4.2$ ldd hellocc
        linux-gate.so.1 =>  (0xb7731000)
        libc++.so.1 => /lib/libc++.so.1 (0xb7655000)
        libm.so.6 => /lib/libm.so.6 (0x43d4d000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x44f67000)
        libc.so.6 => /lib/libc.so.6 (0x41fb2000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x42162000)
        /lib/ld-linux.so.2 (0x41f8f000)
        librt.so.1 => /lib/librt.so.1 (0x42185000)
Библиотеки новые.

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 10 гостей