Помилка завантаження під час компіляції GCC 4.8.0


2

Я отримую помилки завантажувальної програми під час спроби встановити GCC і можу скористатися деякою допомогою. Я намагаюся компілювати GCC у своєму домашньому каталозі на загальній системі (кластері). Кластер має GCC 4.4.3, який я використовую для завантаження компіляції. Я написав цей маленький сценарій, щоб показати, що я роблю, і допомогти у налагодженні:

# Installation parameters
gccver=4.8.0
gmpver=5.1.1
mpcver=1.0.1
mpfrver=3.1.2
prefix=$HOME/local
langs=c,c++

# Download source
wget ftp://gnu.mirror.iweb.com/gnu/gcc/gcc-${gccver}/gcc-${gccver}.tar.gz
wget ftp://ftp.gnu.org/gnu/gmp/gmp-${gmpver}.tar.bz2
wget ftp://ftp.gnu.org/gnu/mpc/mpc-${mpcver}.tar.gz
wget ftp://ftp.gnu.org/gnu/mpfr/mpfr-${mpfrver}.tar.gz

# Unpack source
tar -xzvf gcc-${gccver}.tar.gz
tar -xjvf gmp-${gmpver}.tar.bz2
tar -xzvf mpc-${mpcver}.tar.gz
tar -xzvf mpfr-${mpfrver}.tar.gz

# Move dependency source directories into gcc source directory
mv gmp-${gmpver} gcc-${gccver}/gmp
mv mpc-${mpcver} gcc-${gccver}/mpc
mv mpfr-${mpfrver} gcc-${gccver}/mpfr

# create a build directory and change to it
mkdir objdir
pushd objdir

# configure, make, check, and install gcc:
../gcc-${gccver}/configure --prefix=${prefix} --enable-languages=${langs}
make -j 16
make install

# return to the original directory
popd

Вищезазначене не вдається під час 'make' з помилкою: "Помилка порівняння завантажувальної програми!" Останні кілька сторінок виводу я завантажив як error.txt , а також config.log зі стадії налаштування. Я спробував:

  1. запуск make distcleanвід objdir і повторний запуск конфігуруйте і зробіть.
  2. видалення -j 16з make.
  3. використання абсолютного шляху при виклику налаштування.
  4. використовуючи contrib/download_prerequisitesсценарій для завантаження mpfr-2.4.2, gmp-4.3.2 та mpc-0.8.1, замість новіших версій вище.
  5. встановлення змінної середовища PWDCMD на команду pwd (pawd), обізнану з автоматикою.
  6. завантаження з іншою версією GCC (3.4.6).
  7. завантаження з ICC 12.0.0 через export CC=iccі export CXX=icpc.

Я також спробував розмістити це питання в списку розсилки gcc; саме тут я отримав пропозицію (2) вище.

Будь-яка ідея, чому ця збірка не працює?


Останні кілька рядків повідомлення про помилку, Entering directoryпочинаючи з цього моменту , викликані тим make install, що викликається, навіть makeневдалою. Можливо, було б краще зателефонувати, make && make installа не телефонувати окремо.
Дуглас Б. Степлер

Відповіді:


1

Ви також можете спробувати make bootstrapабо make bootstrap4замість цього безпосередньо make install, щоб побачити, чи це має значення.


Мені не зрозуміло інструкцій зі складання GCC, в чому різниця між makeта make bootstrap; мені здається, що так makeчи інакше виконується 3-ступінчаста завантажувальна програма. Крім того, чи bootstrap4включають ті самі перші три етапи, як bootstrap, і в такому випадку я повинен очікувати, що він провалиться? Я все одно спробую їх обох, коли повернуся з роботи додому.
Дуглас Б. Стейпл

make bootstrapі make bootstrap4обидва дають ту саму помилку, що і make. Дякую за пропозиції.
Дуглас Б. Степлер

0

Спробуйте виконати make distcleanі ./configure && makeще раз.

Дивіться подібну проблему тут: https://stackoverflow.com/questions/8651547/error-compiling-the-compiler-gcc


1
Я спробував це, і це не мало значення. Я бачив, що ця порада плаває навколо, але make distcleanвидаляє все в моєму обдіді (крім одного зі сценічних файлів), тому для мене це те саме, що починати. Крім того, я не займаюся тим, ./configureщо gcc не підтримує будівництво у вихідному дереві; Я запускаю конфігурацію та створюю з objdir за межами дерева джерела gcc.
Дуглас Б. Степлер

0

Конструктор Чак Норріс, який відповідає за систему, побудовану GCC 4.8.0, виконавши наступні кроки:

module purge
cd /tmp/repoman
tar xzf ~/src/gnu/gcc-4.8.0.tar.gz
cd gcc-4.8.0/
tar xzf ~/src/gnu/mpfr-2.4.2.tar.gz
ln -s mpfr-2.4.2 mpfr
tar xzf ~/src/gnu/gmp-4.3.2.tar.gz
ln -s gmp-4.3.2 gmp
tar xzf ~/src/gnu/mpc-0.8.1.tar.gz
ln -s mpc-0.8.1 mpc
cd ../
mkdir objdir
cd objdir/
../gcc-4.8.0/configure --prefix=/usr/local/gcc-4.8.0 CC=gcc4 CXX=g++4
make && make install

Це досить схоже на те, що я робив. Відмінності полягали в тому, що я цього не робив module purge, я mvбув обов'язковим джерелом замість того ln -s, щоб їх не вказав CC=gcc4 CXX=g++4, і я, очевидно, --prefixвказав на шлях у своєму домашньому каталозі. Я не впевнений, хто з них міг би змінити ситуацію; ймовірно, CC=... CXX=...або module purge. Я перевірю і опублікую результат.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.