Трудности при компиляции netfilter_queue для CentOS 5.4 (ошибка GCC)

Я серьезно обескуражен, потратив несколько часов на попытки выяснить, в чем заключаются мои проблемы при компиляции библиотеки c (netfilter_queue) для моей машины с CentOS 5.4. Я использую машину Centos x64.

При запуске ./configure я увидел ошибку, указывающую на сбой моего компилятора. После проверки моего файла «config.log», созданного командой ./configure, я увидел, что он не смог скомпилировать файл sanity c (вероятно, используемый для проверки правильности работы моего компилятора)

Не удалось с ошибками:

/tmp/iuucsLU.s: Error: Suffix or operands invalid for `push`
/tmp/iuucsLU.s: Error: Suffix or operands invalid for `push`
/tmp/iuucsLU.s: Error: Suffix or operands invalid for `pop`
/tmp/iuucsLU.s: Error: Suffix or operands invalid for `pop`
/tmp/iuucsLU.s: Error: Suffix or operands invalid for `pop`
/tmp/iuucsLU.s: Error: Suffix or operands invalid for `push`

Когда я понял, что моя проблема, вероятно, связана с gcc, я создал следующий файл c:

#import <stdio.h>
main()
{
    return 0;
}

Я назвал файл «test.c» и попытался скомпилировать его с помощью «gcc test.c», но он потерпел неудачу с теми же ошибками. Я понял, что мои проблемы, вероятно, связаны с проблемами совместимости 32/64 бит, поэтому я попытался запустить его, указав конкретный ассемблер.

  1. Когда я выполнил «gcc -m32 test.c», он завершился с теми же ошибками.
  2. Когда я выполнил «gcc -m64 test.c», произошла следующая ошибка:

    test.c:0: извините, не реализовано: 64-битный режим не скомпилирован

Я не могу понять, в чем моя проблема, я наверняка использую 64-битную машину. Просто отметим, что я установил gcc и все его зависимости вручную, используя rpm, поставляющий файлы rpm с CentOS-CD.

Помощь будет принята с благодарностью. Заранее спасибо, Лорен.


person Lauren Ottawa    schedule 17.11.2014    source источник
comment
Почему вы установили их вручную с помощью rpm, а не с помощью yum? Что говорит uname -a? Что говорит rpm -qa --qf '%{n}-%{v}-%{r}.%{arch}\n' gcc?   -  person Etan Reisner    schedule 17.11.2014
comment
Потому что моя машина на самом деле эмулируется с помощью виртуального бокса и не подключена к Интернету и, следовательно, не подключена к онлайн-репозиторию. Я мог бы использовать репозиторий c6-media, но предпочел установить его самостоятельно.   -  person Lauren Ottawa    schedule 18.11.2014
comment
c6-media или c5-media? Как насчет вывода этих других команд?   -  person Etan Reisner    schedule 18.11.2014
comment
На самом деле c5, моя ошибка. Что вы подразумеваете под другими командами? вывод каких команд вы хотите получить?   -  person Lauren Ottawa    schedule 18.11.2014
comment
Два, о которых я упоминал в своем первом комментарии.   -  person Etan Reisner    schedule 18.11.2014
comment
uname -a: uname -a = Linux 2.6.18-348.3.1.el5 #1 SMP Пн, 17 ноября, 13:39:25 по восточному поясному времени 2014 x86_64 x86_64 x86_64 GNU/Linux   -  person Lauren Ottawa    schedule 18.11.2014
comment
Вы действительно привели меня к решению, большое спасибо!. проблема в том, что я использовал 64-битную машину, но я установил только 32-битную версию gcc, а мой ассемблер по умолчанию был 32-битным, что смутило мой компилятор. проблема может быть решена загрузкой определенных RPM (по иронии судьбы компакт-диск предоставляет только 32-битные RPM, что делает чепуху). спасибо Этан!   -  person Lauren Ottawa    schedule 18.11.2014
comment
Вы должны опубликовать решение в качестве ответа на этот вопрос и принять его, если считаете, что оно будет полезно кому-то в будущем.   -  person Etan Reisner    schedule 18.11.2014


Ответы (1)


проблема в том, что я использовал 64-битную машину, но я установил только 32-битную версию gcc, а мой ассемблер по умолчанию был 32-битным, что смутило мой компилятор. проблема может быть решена загрузкой определенных RPM (по иронии судьбы компакт-диск предоставляет только 32-битные RPM, что делает чепуху). спасибо Этан!

person Lauren Ottawa    schedule 17.11.2014