Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: IDE, инструментарий
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.74/35: Рейтинг темы: голосов - 35, средняя оценка - 4.74
DiffEreD
1442 / 779 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
1

Установка последнего gcc, clang и boost

19.08.2015, 12:08. Просмотров 6531. Ответов 64
Метки нет (Все метки)

Помогите начинающему пользователю Linux. Я никак не могу разобраться как в этой системе что либо устанавливать. Кое как установил себе QtCreator (из предварительно скаченного run файла), но никак не пойму как установить к нему компиляторы. Для gcc пробовал такое:
sudo apt-get install g++-5
Мне в ответ:
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
E: Не удалось найти пакет g++-5
E: Не удалось найти пакет по регулярному выражению «g++-5»
У меня есть еще скачанный архив gcc-5.2.0.tar.bz2 на диске - может как то с него можно установить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2015, 12:08
Ответы с готовыми решениями:

[SFINAE] GCC/Clang - success. CL - failed
добрый вечер. следующий код успешно собирают gcc/clang но не может собрать...

Clang + lldb + Qt
Всем привет. lldb настойчиво не может развернуть кутешные структуры (да и не...

clang начал поддерживать С++14
Привет! Вот такая новость :) Все, что реализовано можно посмотреть здесь (там...

Пытаемся подружить clang 3.6 и Code::Blocks 13.12 + MinGW под Windows 7
Скачал clang. Установил в корень диска С. То есть, путь получился такой: До...

Пытаемся прикрутить Clang к QtCreator под Windows7 x64 посредством MSYS2
По мотивам этой темы: DrOffset, а как?

64
gng
809 / 553 / 168
Регистрация: 08.09.2013
Сообщений: 1,498
21.08.2015, 07:42 41
Цитата Сообщение от Croessmah Посмотреть сообщение
да нифига, у меня 5.2 тоже сам не встал куда нужно, прописывал символьные ссылки руками
Что вы имеете в виду?
1) При конфигурировании префикс был указан один, а бинарники, либы, хедеры по make install встали в другое место?
или
2) Пришлось делать ссылки для каких-то версий разделяемых библиотек?
или
3) Он не обновил альтернативы дистра?
Если перевое или второе, то это баг. Может, вы брали очень сырую версию.
Если третье, то он как бы и не должен этого делать. Тогда либо самому обновить альтернативы, либо подправить переменные окружения - PATH и LD_LIBRARY_PATH, либо просто вызывать его по полному пути, и в случае неправильного поиска разделяемых библиотек, подправить /etc/ld.so.conf.

Проблемы могут возникнуть в другом. Немного изменился ABI для libstdc++ и программы дистра ожидают библиотеку с другим ABI. Здесь либо устанавливать LD_LIBRARY_PATH только для своих, собранных новым компилятором программ, либо поверить разрабам gcc, что они сохранили оба ABI и новая библиотека будет правильно обрабатывать вызовы старых программ.
0
DrOffset
8142 / 4723 / 1154
Регистрация: 30.01.2014
Сообщений: 7,693
21.08.2015, 09:06 42
DiffEreD, Ну, собственно, я посмотрел. У меня fedora 20 и gcc 5.1. Установлен в /usr/gcc-5.1.
В Qt Creator у меня добавлен компилятор GCC-5.1, путь такой: /usr/gcc-5.1/bin/g++5.1
В комплектах добавлена новая цель Desktop-GCC-5.1, в которой указан компилятор GCC-5.1.
При создании проекта выбираю цель Desktop-GCC-5.1. В общем все работает при таком раскладе.
При конфигурации сборки GCC в --prefix сразу указывал /usr/gcc-5.1. После компиляции - sudo make install. Естественно никаких ссылок, копирований вручную не делал, да и не должно этого быть в штатной ситуации.
1
DiffEreD
1442 / 779 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
21.08.2015, 09:38  [ТС] 43
Ясно, вечером попробую пересобрать с --prefix /usr/gcc-5.2. Спасибо.
0
gng
809 / 553 / 168
Регистрация: 08.09.2013
Сообщений: 1,498
21.08.2015, 11:12 44
DiffEreD, поддавшись вашему примеру, поставил себе самый новый gcc на свой старый нетбук)))
Трехходовка
./configure
make
make install от рута
сработала без ошибок. Префикс не указывал Установился в /usr/local как и ожидалось.
Ваша программа с макросом печатает версию 5.2.0
Библиотеки, в т.ч. и libstdc++ по умолчанию берет дистровские, но при
LD_LIBRARY_PATH=/usr/local/lib
уже подхватывает свои, свеже собранные.
1
DiffEreD
1442 / 779 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
21.08.2015, 23:55  [ТС] 45
Увы господа. Пересобрал так:
Bash
1
2
3
4
5
../configure --disable-checking --enable-languages=c,c++ \
  --enable-multiarch --enable-shared --enable-threads=posix \
  --program-suffix=5.2 --with-gmp=/usr/local/lib --with-mpc=/usr/lib \
  --with-mpfr=/usr/lib --without-included-gettext --with-system-zlib \
  --with-tune=generic
Bash
1
2
make -j3
make install
Все собралось в /usr/local/ Компиляция из консоли кода с макросом __VERSION__:
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
yurion@yurion-Rampage-Formula:~$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.9/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.9.2-0ubuntu1~14.04' --with-bugurl=file:///usr/share/doc/gcc-4.9/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.9 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.9 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.9-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.9-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.9-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --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.9.2 (Ubuntu 4.9.2-0ubuntu1~14.04) 
yurion@yurion-Rampage-Formula:~$ g++5.2 -v
Используются внутренние спецификации.
COLLECT_GCC=g++5.2
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/lto-wrapper
Целевая архитектура: x86_64-unknown-linux-gnu
Параметры конфигурации: ../configure --disable-checking --enable-languages=c,c++ --enable-multiarch --enable-shared --enable-threads=posix --program-suffix=5.2 --with-gmp=/usr/local/lib --with-mpc=/usr/lib --with-mpfr=/usr/lib --without-included-gettext --with-system-zlib --with-tune=generic
Модель многопоточности: posix
gcc версия 5.2.0 (GCC) 
yurion@yurion-Rampage-Formula:~$ g++ main.cpp -o main
yurion@yurion-Rampage-Formula:~$ ./main
4.9.2
yurion@yurion-Rampage-Formula:~$ g++5.2 main.cpp -o main2
yurion@yurion-Rampage-Formula:~$ ./main2
5.2.0
yurion@yurion-Rampage-Formula:~$
В настройках QtCreator: Добавить новый: - добавляю название GCC-5.2, путь к компилятору указываю /usr/local/bin/g++5.2. Комплекты: выбираю компилятор GCC-5.2. Создаю новый проект с правильным комплектом. Компилирую - вывод 4.9.2
Удалил весь набор Qt. Установил заново QtCreator. Установил cmake. Создал проект с помощью cmake - снова вывод 4.9.2.

Установил Clion 1.1. В настойках Toolchains у него есть только выбор настроек cmake и GDB. Указал свои из папок /usr/bin/cmake, /usr/bin/gdb. Компилятор подхватываеться автоматически только из /usr/bin/c++
Короче, видимо не судьба мне использовать gcc 5.2.0. Буду дальше експерементировать ...
0
Croessmah
++Ͻ
14624 / 8374 / 1580
Регистрация: 27.09.2012
Сообщений: 20,574
Записей в блоге: 2
Завершенные тесты: 1
22.08.2015, 04:36 46
3) Он не обновил альтернативы дистра?
Угу. Как были они для 4.8.4, так и остались. Но переправить пару ссылок - не беда
0
DiffEreD
1442 / 779 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
22.08.2015, 10:39  [ТС] 47
Короче, сделал так - залез в папку /usr/local/bin/ и переименовал g++5.2 на g++. В настройках QtCreator указал путь к помпилятору /usr/local/bin/g++. Оказывается, он не понимал что такое g++5.2 и использовал штатный g++(или возможно, тот что шел в комплекте с Qt, я точно не знаю). Ура, теперь выводит 5.2.0.
Пересобираю снова, только без --program-suffix=5.2
0
Croessmah
++Ͻ
14624 / 8374 / 1580
Регистрация: 27.09.2012
Сообщений: 20,574
Записей в блоге: 2
Завершенные тесты: 1
22.08.2015, 11:05 48
Лучший ответ Сообщение было отмечено DiffEreD как решение

Решение

Цитата Сообщение от DiffEreD Посмотреть сообщение
Короче, сделал так - залез в папку /usr/local/bin/ и переименовал g++5.2 на g++. В настройках QtCreator указал путь к помпилятору /usr/local/bin/g++. Оказывается, он не понимал что такое g++5.2 и использовал штатный g++(или возможно, тот что шел в комплекте с Qt, я точно не знаю). Ура, теперь выводит 5.2.0.
DiffEreD,
кому писалось
Создать символьную ссылку g++ на новую версию компилятора. Примерно так:
ln -s /g++5_path/g++5.2 /usr/bin/g++
только названия у нх так и остались g++5.2 и т.д.
Я привел пример /g++5_path/g++5.2 /usr/bin/g++
непонятно
1
DiffEreD
1442 / 779 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
22.08.2015, 20:42  [ТС] 49
Croessmah, создать эти символьные ссылки в /usr/bin/g++ не получается так как такой файл уже существует . Я создал ссылки в другой папке и указал где их искать в QtCreator. Все работает. Спасибо.
0
castorsky
1973 / 1076 / 87
Регистрация: 29.11.2013
Сообщений: 3,354
22.08.2015, 23:51 50
Цитата Сообщение от DiffEreD Посмотреть сообщение
он не понимал что такое g++5.2
Конечно не понимал. Надо g++-5.2 (дефис пропущен).

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
кому писалось
Человек не понимает элементарных основ работы в системе. Отсюда и вся возня.


Ну раньше поставил он себе в $HOME ну и пусть. Выполнить
Bash
1
$ echo "PATH = $HOME/gcc-5.2/bin:$PATH" >> ./.bashrc && echo "export PATH" >> ./.bashrc
и будет ему счастье. Система-то всё равно однопользовательская. Потом пути:
DiffEreD, пути бывают абсолютными и относительными. Абсолютный всегда задается с корня системы "/path/to/file" относительный с текущего каталога "./path/to/file" или каталога уровнем выше "../path/to/file" или двух уровней "../../path/to/file" и т.д. По умолчанию все программы, набираемые в терминале ищутся в $PATH. Посмотреть можете так
Bash
1
$ echo $PATH
Бакс вначале кода говорит о том что выполнять можно от пользователя, а такой пример говорит о том что выполняется от root'а
Bash
1
# chroot /mnt/bound_system
Прочие прелести командной строки и "unix ориентации": маленькие программы, их вывод можно подавать на вход других организуя конвейер. Например, Вы могли свободно выявить все свои g++'сы вот так
Bash
1
$ g++<TAB>
и по автодополнению получить вывод всех имеющихся паттернов, которые найдены в $PATH. Или так
Bash
1
$ ls /usr/bin | grep g++
что есть "пролистать всё в /usr/bin и напечатать только паттерн g++"
Потом такие вещи как ls, pwd, which, whereis, cd, ln, grep, less, tail, cat, ... надо просто знать. И вовсе не обязательно "на зубок". Для поиска справок по командам пользуйтесь man и apropos. Например ищем все паттерны malloc
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
bash-4.3~$ apropos malloc
__after_morecore_hook (3) - malloc debugging variables
__free_hook (3)      - malloc debugging variables
__malloc_hook (3)    - malloc debugging variables
__malloc_initialize_hook (3) - malloc debugging variables
__memalign_hook (3)  - malloc debugging variables
__realloc_hook (3)   - malloc debugging variables
TIFFmemory (3tiff)   - memory management-related functions for use with TIFF files
ber_memalloc (3)     - OpenLDAP LBER memory allocators
ldap_memalloc (3)    - LDAP memory allocation routines
malloc (3)           - allocate and free dynamic memory
malloc_get_state (3) - record and restore state of malloc implementation
malloc_hook (3)      - malloc debugging variables
malloc_info (3)      - export malloc state to a stream
malloc_set_state (3) - record and restore state of malloc implementation
malloc_stats (3)     - print memory allocation statistics
malloc_trim (3)      - release free memory from the top of the heap
malloc_usable_size (3) - obtain size of block of memory allocated from heap
mtrace (1)           - Interpret output from MALLOC_TRACE
mtrace (3)           - malloc tracing
muntrace (3)         - malloc tracing
XtMalloc (3)         - memory management functions
bash-4.3~$
и выяснили что нам подходит malloc_stats, из 3 раздела справочной системы. Пишем
Bash
1
$ man 3 malloc_stats
и читаем подробную справку по вызову.

Не по теме:

Я не знаю зачем всё это написал. Просто мне показалось что 3 страницы слишком много для этой проблемы, а решена она была еще на первой.

1
DiffEreD
1442 / 779 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
23.08.2015, 22:49  [ТС] 51
Цитата Сообщение от castorsky Посмотреть сообщение
Конечно не понимал. Надо g++-5.2 (дефис пропущен)
Ради интереса пересобрал с суффиксом -5.2 - в результате файл получился g++-5.2. Ситуация с QtCreator повторилась. И не важно, есть ли мой компилятор в PATH или нету. Помогает только создание символьной ссылки с именем g++ и настройкой IDE на эту ссылку.
Цитата Сообщение от castorsky Посмотреть сообщение
Выполнить
$ echo "PATH = $HOME/gcc-5.2/bin:$PATH" >> ./.bashrc && echo "export PATH" >> ./.bashrc
Почему то эта команда у меня не срабатывает - в PATH ничего не добавляется.

Добавлено через 9 минут
Я вот тут начинаю думать как собрать теперь boost с моим gcc-5.2. Я распаковал его в /home/<user>/boost_1_58_0/ , запустил с консоли
Bash
1
./bootstrap.sh gcc
, а дальше пока не знаю как правильно. На Windows запускал далее процесс сборки так:
Bash
1
2
3
4
5
6
7
8
9
10
11
bjam ^
   -j2 ^
   toolset=gcc ^
   variant=release ^
   threading=multi ^
   link=static ^
   runtime-link=static ^
   --layout=system ^
   --libdir=C:\boost\lib ^
   --includedir=C:\boost\include ^
   install
, но там я в переменных окружения настраивал каким компилятором пользоваться. А тут как не знаю - у меня сейчас в $PATH два компилятора определяются - штатный и мой.
0
castorsky
1973 / 1076 / 87
Регистрация: 29.11.2013
Сообщений: 3,354
23.08.2015, 23:09 52
Цитата Сообщение от DiffEreD Посмотреть сообщение
Ради интереса пересобрал с суффиксом -5.2
Это уж совсем лишнее (явно указывать суффикс).
Цитата Сообщение от DiffEreD Посмотреть сообщение
И не важно, есть ли мой компилятор в PATH или нету. Помогает только создание символьной ссылки с именем g++ и настройкой IDE на эту ссылку.
Ради интереса указал только что в QtCreator другой компилятор. Всё работает. Только если указываем явно, надо знать что указывать. К слову сказать linux case-sensitive система.
Цитата Сообщение от DiffEreD Посмотреть сообщение
Почему то эта команда у меня не срабатывает - в PATH ничего не добавляется.
Уточню что файл .bashrc должен лежать в домашней директории ($HOME) и команды надо выполнить из $HOME или заменить ./.bashrc на ~/.bashrc. Директория "~/" это домашняя директория, она же $HOME. Дальше надо перелогиниться, чтобы bash подхватил свежие настройки. Если у Вас всё же bash по умолчанию.
Bash
1
2
3
$ cd boost/src/path
$ sh ./bootstrap.sh
$ ./b2
0
DiffEreD
1442 / 779 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
23.08.2015, 23:28  [ТС] 53
При запуске ./b2 начинает собирать со штатным компилятором - это видно по названиям в консоли. Мне надо с g++-5.2

Добавлено через 3 минуты
Цитата Сообщение от castorsky Посмотреть сообщение
Ради интереса указал только что в QtCreator другой компилятор. Всё работает.
castorsky, а вы попробуйте запустить код с 25 поста и уведите что вывод версии будет от другого компилятора.
0
castorsky
1973 / 1076 / 87
Регистрация: 29.11.2013
Сообщений: 3,354
23.08.2015, 23:43 54
Bash
1
2
3
4
bash-4.3~$ sh ./bootstrap.sh /usr/local/bin/gcc
Building Boost.Build engine with toolset gcc... tools/build/src/engine/bin.linuxx86_64/b2
...
bash-4.3~$
0
DiffEreD
1442 / 779 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
23.08.2015, 23:55  [ТС] 55
Я попробовал так:
Bash
1
root@home-pc:/home/<user>/boost_1_58_0# sh ./bootstrap.sh /usr/local/bin/gcc-5.2
и так:
Bash
1
root@home-pc:/home/<user>/boost_1_58_0# sh ./bootstrap.sh /usr/local/bin/gcc
По записям в консоли видно что сборка идет для g++-4.8, который у меня сейчас штатный в системе. Что то не так.
0
castorsky
1973 / 1076 / 87
Регистрация: 29.11.2013
Сообщений: 3,354
23.08.2015, 23:56 56
Цитата Сообщение от DiffEreD Посмотреть сообщение
а вы попробуйте запустить код с 25 поста и уведите что вывод версии будет от другого компилятора.
Всё Ok
сначала Tools > Options > Build & Run > Kits надо клонировать и отредактировать, потом Tools > Options > Build & Run > Compilers > Add добавить еще один компилятор. Потом всё это вместе между собой увязать. Порядок не важен.
0
DiffEreD
1442 / 779 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
24.08.2015, 00:07  [ТС] 57
Цитата Сообщение от castorsky Посмотреть сообщение
сначала Tools > Options > Build & Run > Kits надо клонировать и отредактировать, потом Tools > Options > Build & Run > Compilers > Add добавить еще один компилятор
Все это делал. У меня, если при добавлении нового компилятора, указать путь /usr/local/bin/g++-5.2, то IDE его не подхватывает, а использует штатный (не знаю почему все пишут что у них все работает; может у меня еще что то в системе не настроено). А если указать путь через символьную ссылку на этот компилятор с именем g++ (допустим так /usr/local/bin/g++ где g++ - символьная ссылка на usr/local/bin/g++-5.2), то все OK. Из за этого такая неразбериха получилась.
0
castorsky
1973 / 1076 / 87
Регистрация: 29.11.2013
Сообщений: 3,354
24.08.2015, 00:09 58
Лучший ответ Сообщение было отмечено DiffEreD как решение

Решение

тут посмотрите http://www.boost.org/build/doc/html/bbv2/overview/configuration.html
1
DiffEreD
1442 / 779 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
24.08.2015, 18:25  [ТС] 59
castorsky, отредактировал файл user-config.jam и теперь пошла сборка для gcc-5.2.0.
У меня тут возник вопрос по конфигурированию. Собираю вот так:
Bash
1
2
3
4
5
6
./b2 -j2 --variant=release \
   --threading=multi \
   --link=static \
   --runtime-link=static \
   --layout=system \
   --prefix=/usr/boost_1.58
По завершении вроде теперь надо сделать install, но не понятно с каким ключом
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<user>@home-pc:~/boost_1_58_0$  install    
install: пропущен операнд, задающий файл
По команде «install --help» можно получить дополнительную информацию.
<user>@home-pc:~/boost_1_58_0$ install --help
Использование: install [КЛЮЧ][-T] ИСТОЧНИК НАЗНАЧЕНИЕ
       или:    install [КЛЮЧ]… ИСТОЧНИК… КАТАЛОГ
       или:    install [КЛЮЧ]-t КАТАЛОГ ИСТОЧНИК…
       или:    install [КЛЮЧ]-d КАТАЛОГ…
 
Программа install копирует файлы (часто, только что скомпилированные) в
заданное вами место. Если вы хотите скачать и установить готовый к
использованию пакет в систему GNU/Linux, то вместо неё должны использовать
менеджер пакетов, например yum(1) или apt-get(1).
 
В первых трёх формах копируется ИСТОЧНИК в НАЗНАЧЕНИЕ или несколько
ИСТОЧНИКОВ в существующий КАТАЛОГ, устанавливая режимы доступа и
владельца/группу. В четвёртой форме создаются все компоненты указанных
КАТАЛОГОВ.
 
Аргументы, обязательные для длинных ключей, обязательны и для коротких.
      --backup[=КОНТРОЛЬ]  создавать резервные копии целевых файлов
  -b                       то же, что и --backup, но без аргумента
  -c                       (игнорируется)
  -C, --compare            сравнивать каждую пару файл источника и назначения,
                           и, в некоторых случаях, вообще не изменять файл
                           назначения
  -d, --directory          рассматривать все аргументы как каталоги; создавать
                           все компоненты указанных каталогов
  -D                       создавать все начальные составляющие НАЗНАЧЕНИЯ
                           кроме последнего, затем копировать ИСТОЧНИК в
                           НАЗНАЧЕНИЕ
  -g, --group=ГРУППА       устанавливать ГРУППУ, а не группу текущего процесса
  -m, --mode=РЕЖИМ         устанавливать РЕЖИМ (как chmod), а не rwxr-xr-x
  -o, --owner=ВЛАДЕЛЕЦ     устанавливать ВЛАДЕЛЬЦА (только для
                           суперпользователя)
  -p, --preserve-timestamps устанавливать целевым файлам времена
                            доступа/изменения как у их файлов-ИСТОЧНИКОВ
  -s, --strip              удалять таблицы символов
      --strip-program=ПРОГРАММА  задать программу для удаления
                                 таблицы символов
  -S, --suffix=СУФФИКС     использовать для резервных копий заданный СУФФИКС
  -t, --target-directory=КАТАЛОГ копировать все аргументы-ИСТОЧНИКИ в КАТАЛОГ
  -T, --no-target-directory считать НАЗНАЧЕНИЕ обычным файлом
  -v, --verbose            выводить название каждого создаваемого каталога
      --preserve-context   сохранять контекст безопасности SELinux
  -Z, --context=КОНТЕКСТ   задать контекст безопасности SELinux файлам
                           и каталогам
      --help     показать эту справку и выйти
      --version  показать информацию о версии и выйти
 
По умолчанию суффикс для запасных копий «~», если только не установлена
переменная окружения SIMPLE_BACKUP_SUFFIX или ключ --suffix. Способ контроля
версий может быть установлен при помощи ключа --backup или переменной
окружения VERSION_CONTROL. Допустимые значения:
 
  none, off       никогда не создавать резервных копий (даже если
                  указан ключ --backup)
  numbered, t     создавать нумерованные копии
  existing, nil   если существуют нумерованные копии, то создавать
                  нумерованные иначе создавать простые
  simple. never   всегда создавать простые копии
 
Об ошибках в install сообщайте по адресу [email]bug-coreutils@gnu.org[/email].
Домашняя страница GNU coreutils: <http://www.gnu.org/software/coreutils/>
Справка по работе с программами GNU: <http://www.gnu.org/gethelp/>
Об ошибках в переводе сообщений «install» сообщайте по адресу <gnu@mx.ru>
Полная документация доступна по команде: info coreutils 'install invocation'


Добавлено через 1 час 21 минуту
Вроде разобрался. Сделал как тут: Installing Boost 1.55 from source on Ubuntu 12.04

Добавлено через 5 минут
Еще у меня возникла небольшая неразбериха с $PATH. Почему то с командой sudo мой PATH уже не работает:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<user>@home-pc:~$ $PATH
bash: /usr/gcc-5.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games: Нет такого файла или каталога
<user>@home-pc:~$ 
<user>@home-pc:~$ g++-5.2 -v
Используются внутренние спецификации.
COLLECT_GCC=g++-5.2
COLLECT_LTO_WRAPPER=/usr/gcc-5.2/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/lto-wrapper
Целевая архитектура: x86_64-unknown-linux-gnu
Параметры конфигурации: ../configure --disable-checking --enable-languages=c,c++ --enable-multiarch --enable-shared --enable-threads=posix --program-suffix=5.2 --with-gmp=/usr/local/lib --with-mpc=/usr/lib --with-mpfr=/usr/lib --without-included-gettext --with-system-zlib --with-tune=generic --prefix=/usr/gcc-5.2
Модель многопоточности: posix
gcc версия 5.2.0 (GCC) 
<user>@home-pc:~$ sudo g++-5.2 -v
[sudo] password for user: 
sudo: g++-5.2: command not found
Добавлено через 1 минуту
Из за этого я не могу сделать так:
Bash
1
sudo ./b2 ...
Добавлено через 3 минуты
Ну и само собой, консоль от имени root:
Bash
1
2
root@home-pc:/home# g++-5.2 -v
g++-5.2: команда не найдена
Добавлено через 2 минуты
Для правки $PATH редактировал файл .bashrc. В конец добавил export PATH="/usr/gcc-5.2/bin:$PATH"

Добавлено через 1 час 11 минут
Собрал boost так:
Bash
1
2
3
sudo -s
./bootstrap.sh --prefix=/usr/local/boost_1.58
./b2 --with=all -j2 cxxflags="-std=c++11" --target=shared,static install
Добавлено через 11 минут
Теперь еще одна небольшая проблемка. Пробую запустить код с boost::filesystem.
мой pro file
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
 
SOURCES += main.cpp
 
include(deployment.pri)
qtcAddDeployment()
 
QMAKE_CXXFLAGS += -std=c++11
QMAKE_LFLAGS += -static-libgcc -static-libstdc++ -static
 
BOOST_ROOT = /usr/local/boost_1.58
INCLUDEPATH +=  $${BOOST_ROOT}\include
 
#BOOST LIBRARY:
LIBS += -L$${BOOST_ROOT}\lib
LIBS += -lboost_system
LIBS += -lboost_filesystem
При запуске примерно такое:
Кликните здесь для просмотра всего текста
Bash
1
2
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.9' not found
Что посоветуете?

Добавлено через 13 минут
А все, извините, разобрался сам. Надо было установить это sudo apt-get install libstdc++6

Добавлено через 4 минуты

Не по теме:

Я тут такую кучу текста нагородил, если у кого есть желание что то дополнить или указать на явные мои ошибки, пишите не стесняйтесь :)



Добавлено через 2 часа 21 минуту
У меня, походу всего этого, еще возник вопрос по тому в какие папки все же правильнее собирать - по умолчанию, как бы, все собирается в usr/local. Вроде, это не совсем удобно, так как сегодня я собираю gcc-5.2.0, boost_1.58, gdb-7.9.1, а через некоторое время надо будет пересобрать с более новыми версиями. Надо будет чистить папки от старых сборок - usr/local/bin, usr/local/include, usr/local/lib и т. д. Нечаянно можно удалить что то не то. По оддельным папкам было бы удобней все это держать. Как вы думаете?
0
DrOffset
8142 / 4723 / 1154
Регистрация: 30.01.2014
Сообщений: 7,693
24.08.2015, 19:59 60
Цитата Сообщение от DiffEreD Посмотреть сообщение
Как вы думаете?
Делаю так:
Есть gcc версии хх. Он ставится в /usr/gcc-xx.
Все библиотеки, которые им собраны ставятся в /usr/gcc-xx/lib, а заголовочные файлы /usr/gcc-xx/include
Таким образом достигается четкое разделение по версиям и уменьшается возможность случайно нарушить ABI.
У меня так собрано с десяток разных компиляторов. Очень часто требуется прыгать с версии на версию или кросскомпилировать.
1
24.08.2015, 19:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2015, 19:59

GCC/Clang bug
Пытаюсь разбить строку на токены при помощи массива указателей и strtok. Вот...

msp430-gcc, clang и mspdebug повесть о косяках
При отладке программ под arm-none-eabi, для просмотра регистров в отладчике...

boost::threads vs gcc 4.8.2
Добрый день, ребят такая проблема, на centos 6.3 стояли gcc 4.4.x и boost...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru