Учебник по сборке всей цепочки инструментов на CentOS

Я работаю на машинах CentOS 6, у которых очень старая версия GCC/GlibC. Я хочу собрать всю цепочку инструментов glibc, binutils, gcc с последними или, по крайней мере, самыми последними версиями, чтобы использовать поддержку С++ 11 в последнем gcc и ld.gold в последних binutils и, возможно, улучшения в последнем glibc.

Я хочу поместить всю цепочку инструментов в какой-то отдельный каталог и не влиять ни на какие существующие системные файлы. Я также хочу собрать gcc с --sys-root, чтобы при использовании gcc мне не нужно было указывать -I/some/directory/include и -L/some/directory/lib или любые другие параметры. Также сгенерированный исполняемый файл будет автоматически использовать новый загрузчик программы ld-linux-xxxxx, который автоматически найдет новый libc.so.

Кто-нибудь знает, существует ли какой-нибудь учебник по этой задаче?


person Kan Li    schedule 08.02.2013    source источник
comment
Разве вы не можете установить последнюю версию CentOS в chroot вашей старой системы?   -  person Basile Starynkevitch    schedule 08.02.2013
comment
Вы уже пробовали инструкции отсюда: gcc.gnu.org/install? Если да, то где вы застряли? Пожалуйста, покажите нам какое-нибудь исследовательское намерение.   -  person Konstantin Vladimirov    schedule 08.02.2013
comment
На самом деле я потратил довольно много времени на их попытки, но на самом деле они вообще не работают. Основным источником проблем является glibc, где ld-linux-xxxx не может найти правильный libc.so, а также заголовки устанавливаются в неправильном месте, где gcc не может его найти и т. д.   -  person Kan Li    schedule 08.02.2013


Ответы (4)


Компилятор очень зависит от glibc, хотя вам удастся собрать компилятор либо в chroot-системе, либо в эквивалентной, вам также нужно будет собрать все библиотеки, необходимые для программы, которую вы будете собирать с помощью этого нового компилятора. Лучшее, что вы можете сделать, это использовать новую новую систему (VM или что-то еще) или обновить существующую.

person sancelot    schedule 08.02.2013

Вы можете скачать последнюю версию набора инструментов с Openembedded или Yocto. И здесь вам не нужно устанавливать какие-либо пакеты в вашу текущую систему. Просто загрузите цепочку инструментов, источник среды, и все готово, чтобы проверить поддержку С++ 11. Место для загрузки цепочки инструментов: http://downloads.yoctoproject.org/releases/yocto/yocto-1.7/toolchain/ (просто выберите 32-битную или 64-битную архитектуру в зависимости от поддержки вашей машины)

person geek    schedule 24.08.2015

Если вам нужен последний набор инструментов, вам лучше перейти на Fedora.

Если вы не можете/не хотите, лучше всего получить фрагменты в виде RPM с исходным кодом для CentOS и Fedora, распаковать их и исправить CentOS, украв исходники и исправления из Fedora. системные пакеты, правильные версии и исправления для установки в другом месте (не портите слишком много своей системы! /usr/local приходит на ум). Куски хоть binutils, gcc.

person vonbrand    schedule 08.02.2013
comment
Эта инструкция слишком абстрактна, и я не могу ей следовать. - person Kan Li; 08.02.2013
comment
@icando, да, это довольно сложно. И нет никакой гарантии, что вы не получите серьезно сломанную систему. И все, что вы создадите с помощью этой цепочки инструментов, больше нигде не будет работать. Если вам действительно нужны функции C++ 2011, приобретите современную систему, в которой вы сможете беспрепятственно использовать ее без каких-либо дополнительных усилий с вашей стороны. Вы даже можете запустить Fedora 18, скажем, на виртуальной машине, если хотите поиграть с новыми функциями. Или дождитесь RHEL/CentOS 7... - person vonbrand; 08.02.2013

Я не знаю Зачем вам это нужно? Если это необходимо для компиляции для другого компьютера, я бы предложил использовать виртуальную машину с той же ОС, что и цель. намного проще!!

person sancelot    schedule 08.02.2013
comment
Я не занимаюсь кросс-компиляцией. Мне просто нужен компилятор на самой машине. Как я уже упоминал, цепочка инструментов на Centos слишком старая и не поддерживает никаких функций С++ 11. Также у него нет ld.gold. VM не вариант, потому что машина Centos работает в самой VM. - person Kan Li; 08.02.2013