Установить g++ без обновления glibc
Мне нужно скомпилировать проект C++ с версией glibc 2.13. Я узнал, что в Ubuntu 11.10 есть версия glibc, которую я ищу.
Поэтому я установил его на своей виртуальной машине, а затем установил компилятор g ++ с:
sudo apt-get install g++
Проблема заключается в том, что обновления пакета g ++ также позволяют использовать последнюю версию glibc 2.19.
Я также попытался скомпилировать исходный код glibc 2.13, но при компиляции я получаю разные ошибки, потому что наверняка мне нужно использовать ту же версию компилятора, которая использовалась при его создании.
Я думаю, что самый быстрый способ - это использовать glibc 2.13, уже установленный в Ubuntu 11.10. Поэтому мне нужно найти решение для установки g ++ без обновления glibc.
2 ответа
Просто загрузите недавний исходный архив GCC 4.9 (и все зависимости, возможно, используя aptitude build-dep gcc
или contrib/download_prerequisites
сценария внутри дерева исходных текстов GCC) и скомпилируйте его и установите из исходного кода (используя установленный glibc-2.13
...). Вы должны настроить его (возможно, передавая что-то вроде --program-suffix=-4.9-mine
и, возможно, некоторые --prefix
) и создайте его за пределами исходного дерева, а затем установите его. (затем используйте g++-4.9-mine
как ваш компилятор C++). Прочтите и внимательно следуйте инструкциям по установке
Бег gcc -v
покажет вам, как была настроена ваша система GCC.
Кстати, я не уверен, что версия glibc всегда так важна (это зависит от многих факторов). Вы пытались скомпилировать свой проект (на любой имеющейся у вас системе Linux) и запустить его на машине (возможно, виртуальной) с помощью glibc 2.13? Это может сработать (но я совсем не уверен)!
Вы можете получить специальную версию из Ubuntu toolchain ppa repo:
#cat /etc/apt/sources.list.d/ubuntu-toolchain-r-test-precise.list
deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu precise main
deb-src http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu precise main
Gcc 4,9
Подготовительные шаги:
apt-get build-dep -y gcc-4.9-multilib
apt-get source -y gcc-4.9-multilib
dpkg-source -x gcc-4.9_4.9.2-0ubuntu1~12.04.dsc
cd gcc-4.9-4.9.2
индивидуальные параметры:
mkdir -p src && tar -xf gcc-*.tar.xz -C src
cd src && ./contrib/download_prerequisites && cd ..
mkdir -p /opt/dev-tools-4.9
../src/configure --prefix=//opt/dev-tools-4.9 \
-v --with-pkgversion='Ubuntu/Linaro 4.9.2-0ubuntu1~12.04' \
--program-suffix=-4.9 --enable-shared --enable-linker-build-id --with-system-zlib \
--libexecdir=//opt/dev-tools-4.9/lib --without-included-gettext \
--enable-threads=posix --with-gxx-include-dir=//opt/dev-tools-4.9/include/c++/4.9 \
--libdir=//opt/dev-tools-4.9/lib --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-abi=m64 --with-multilib-list=m32,m64 --with-tune=generic \
--enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-sysroot=/ --enable-nls
make -j $(grep -c ^processor /proc/cpuinfo ) && make install
Также вы должны пересобрать binutils:
binutils 2.22
apt-get build-dep -y binutils-dev
apt-get source -y binutils-dev
dpkg-source -x binutils_2.22-6ubuntu1.3.dsc
mkdir objdir&& cd objdir
../binutils-2.22/configure --prefix=/opt/rdwr_tools/radware-dev-tools-4.9 \
--exec-prefix=/opt/rdwr_tools/radware-dev-tools-4.9 \
--with-sysroot=/ --enable-multilib \
--with-lib-path=/opt/rdwr_tools/radware-dev-tools-4.9/lib \
--disable-werror --enable-shared \
--enable-targets=x86_64-linux-gnu,i686-linux-gnu,x86_64-pc-mingw32,i686-pc-mingw32
make -j 8 && make install