Arch: Компиляция Toplev.o Не Удалась При Установке Gcc

  • Автор темы RebeccaMeli
  • Обновлено
  • 22, Oct 2024
  • #1

В настоящее время я пытаюсь установить gcc41 с помощью AUR, и у меня возникла проблема.

Каждый раз, когда он проходит процесс компиляции, сборка завершается с ошибкой, поскольку не удается завершить компиляцию объекта toplev из-за ошибки переопределения.

Вот ошибка. Я действительно не знаю, куда идти дальше.

 In file included from ../../gcc/toplev.c:31:0:
../../gcc/gcov-io.h: In function ‘gcov_position’:
../../gcc/system.h:575:55: warning: ISO C does not support ‘__FUNCTION__’ predefined identifier [-Wpedantic]
((void)(!(EXPR) ? fancy_abort (__FILE__, __LINE__, __FUNCTION__), 0 : 0))

^
../../gcc/gcov-io.h:572:3: note: in expansion of macro ‘gcc_assert’

gcc_assert (gcov_var.mode > 0);

^
../../gcc/toplev.c: At top level:
../../gcc/toplev.c:524:1: error: redefinition of ‘floor_log2’

floor_log2 (unsigned HOST_WIDE_INT x)

^
In file included from ../../gcc/toplev.c:59:0:
../../gcc/toplev.h:175:1: note: previous definition of ‘floor_log2’ was here

floor_log2 (unsigned HOST_WIDE_INT x)

^
../../gcc/toplev.c:559:1: error: redefinition of ‘exact_log2’

exact_log2 (unsigned HOST_WIDE_INT x)

^
In file included from ../../gcc/toplev.c:59:0:
../../gcc/toplev.h:181:1: note: previous definition of ‘exact_log2’ was here

exact_log2 (unsigned HOST_WIDE_INT x)

^
Makefile:2064: recipe for target 'toplev.o' failed
make[2]: *** [toplev.o] Error 1
make[2]: Leaving directory '/tmp/yaourt-tmp-michael/aur-gcc41/src/gcc-4.1.2/build/gcc'
Makefile:3907: recipe for target 'all-gcc' failed
make[1]: *** [all-gcc] Error 2
make[1]: Leaving directory '/tmp/yaourt-tmp-michael/aur-gcc41/src/gcc-4.1.2/build'
Makefile:617: recipe for target 'all' failed
make: *** [all] Error 2
 

#arch-linux #компиляция #gcc

RebeccaMeli


Рег
18 Jul, 2014

Тем
72

Постов
182

Баллов
602
  • 25, Oct 2024
  • #2

Я пытался установить

 
 
 
 
 texinfo 
, too, with a newer texinfo версия. Я видел те же ошибки, что и вы. В соответствии с этот отчет об ошибке, проблема связана с флагом @itemx must follow @item , which became the default flag for handling inline functions on newer CC = gcc -fgnu89-inline CXX = g++ -fgnu89-inline версии. По состоянию на CC = gcc CXX = g++ , the default was Makefile . Итак, все, что вам нужно сделать, это установить ./configure flag when compiling.

Я попробовал это с

CFLAGS='-fgnu89-inline -g -O2' CXXFLAGS='-fgnu89-inline -g -O2' ./configure make

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

-fgnu89-inline

и изменил две строки в -fgnu89-inline from

gcc 4.3

к

gcc

Благодаря этому я больше не видел ошибок.

Однако я столкнулся с другими ошибками:

-fno-gn89-inline

Они вызваны более новой версией gcc , so what you could do is using an older version of gcc 4.4.7 . Возможно, вы также могли бы исправить их вручную, я попробовал это для одного случая, но не знаю, что делаю, поэтому не пошел по этому пути.

Короче говоря, я думаю, вам лучше запустить виртуальную машину или образ докера.

 

Luger009


Рег
21 Apr, 2009

Тем
58

Постов
201

Баллов
491
  • 25, Oct 2024
  • #3

Я уже сталкивался с чем-то подобным. Я думаю, проблема в том, что вы пытаетесь скомпилировать gcc41 из AUR, используя GCC 5.2.0-1 (последняя версия Arch). GCC добавляет новые ошибки по мере выпуска версий, поэтому исходный код более старых версий GCC не является всегда считается действительным в более новых версиях GCC. Если вы сможете найти способ отключить это предупреждение, это может помочь. Если вы можете использовать машину обратного пути Arch для получения двоичного файла gcc 4.2, вы можете скомпилировать исходный код gcc 4.2 в двоичной форме.

 

StoomireSar48


Рег
19 Apr, 2004

Тем
85

Постов
194

Баллов
629
Похожие темы Дата
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно