Ошибка установки pynauty: «ошибка: команда« x86_64-linux-gnu-gcc »завершилась неудачно с состоянием выхода 1»

Я пытаюсь установить пакет pynauty Python. Когда я запустил python setup.py build, я получил следующую ошибку. Я установил зависимости. Как я могу успешно установить этот пакет Python?

$ python setup.py build
running build
running build_py
running build_ext
building 'pynauty._pynauty' extension
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Inauty -Isrc -I/usr/include/python2.7 -c src/pynauty.c -o build/temp.linux-x86_64-2.7/src/pynauty.o -O4
In file included from src/pynauty.c:16:0:
nauty/nauty.h:40:0: warning: "_FILE_OFFSET_BITS" redefined
 #define _FILE_OFFSET_BITS 0
 ^
In file included from /usr/include/python2.7/pyconfig.h:3:0,
                 from /usr/include/python2.7/Python.h:8,
                 from src/pynauty.c:15:
/usr/include/x86_64-linux-gnu/python2.7/pyconfig.h:1157:0: note: this is the location of the previous definition
 #define _FILE_OFFSET_BITS 64
 ^
src/pynauty.c: In function ‘_make_nygraph’:
src/pynauty.c:363:33: warning: passing argument 2 of ‘PyDict_Next’ from incompatible pointer type
     while (PyDict_Next(adjdict, &i, &key, &adjlist)) {
                                 ^
In file included from /usr/include/python2.7/Python.h:101:0,
                 from src/pynauty.c:15:
/usr/include/python2.7/dictobject.h:114:17: note: expected ‘Py_ssize_t *’ but argument is of type ‘int *’
 PyAPI_FUNC(int) PyDict_Next(
                 ^
src/pynauty.c: In function ‘init_pynauty’:
src/pynauty.c:537:15: warning: variable ‘m’ set but not used [-Wunused-but-set-variable]
     PyObject *m;
               ^
x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wl,-Bsymbolic-functions -Wl,-z,relro -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security build/temp.linux-x86_64-2.7/src/pynauty.o nauty/nauty.o nauty/nautil.o nauty/naugraph.o -o build/lib.linux-x86_64-2.7/pynauty/_pynauty.so
/usr/bin/ld: nauty/nauty.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
nauty/nauty.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
1
задан 24 April 2015 в 02:27

4 ответа

Нет, Пожалуйста, не делайте этого таким образом! Автор pynauty, Питер DobcsГЎnyi сказал мне, что эта версия неотъемлемо buggish и не приведет к правильным результатам (особенно, в 'удостоверяют' функцию).

Он недавно выпустил совершенно новую версию, 0.6.0 ( https://web.cs.dal.ca / ~ peter/software/pynauty/pynauty-0.6.0.tar.gz ), и эта версия абсолютно правильна и совместима с Пайтоном 2.7 и новый Nauty!

я проверил, что, и все хорошо работает

1
ответ дан 24 April 2015 в 12:27

Я не ясен на Ваших шагах несмотря на Ваше редактирование. Принятие Вас:

./configure # note this command for later make nauty.o nautil.o naugraph.o ln -s ../nautyXX nauty

и столкнулся с ошибкой, которую Вы описали во вводном абзаце Вашего вопроса, чем проблема, с которой Вы, скорее всего, столкнулись, то, что Python по умолчанию настроен без общих библиотек. Неудачный пакет, который Вы загружаете, ищет общую скомпилированную библиотеку и не находит ни один.

Предлагаемое решение: работает ./configure --enable-shared. Тем путем Вы говорите Python на самом деле компилировать их также. Вы могли бы столкнуться с проблемой в зависимости от того, что совместно использовало, освобождает Вас, имеют там, но ничего не может сказать кроме предположения, не зная больше на Вашей стороне.

Источники:

я рекомендую ссылку GitHub, он больше всего разъясняется здесь.

-1
ответ дан 24 April 2015 в 12:27

Полное сообщение об ошибке говорит Вам часть решения: необходимо скомпилировать nauty с эти -fPIC флаг.

  1. Загрузка nauty, разархивируйте его, CD в Загрузку dir
  2. CFLAGS=-fPIC ./configure
  3. make
  4. pynauty, разархивируйте его, CD в dir
  5. ln -s ../nauty* nauty
  6. Однако pynauty's setup.py, файл, кажется, неправильно конфигурируется: это не включает корректные nauty файлы и так перестанет работать на импорте, если создано и установлено в этой точке. Измените extra_objects аргумент в setup.py (строка 37):

    # from
    extra_objects = [ nauty_dir + '/' + 'nauty.so', ],
                          nauty_dir + '/' + 'nautil.o',
                          nauty_dir + '/' + 'naugraph.o'
                        ],
    # change it to
    extra_objects = [nauty_dir + '/' + 'nauty.a'],
    
  7. python setup.py build

  8. python setup.py install (если Вы устанавливаете на системе, используйте sudo, но предпочтительно используйте virtualenv вместо этого)
<час>

, В то время как пакет теперь установлен и разрешен к ввозу, все сбои набора тестов. Это - проблема, которая должна быть устранена специалистом по обслуживанию библиотеки; рассмотрите сообщение об ошибке им.

1
ответ дан 24 April 2015 в 12:27

В дополнение к ответу davidism я выяснил, что тесты сломаны из-за предупреждения, что я добрался, собирая pynauty 0.5, используя Пайтона 2.7 и nauty25r9:

src/pynauty.c: In function ‘_make_nygraph’:
src/pynauty.c:363:33: warning: passing argument 2 of ‘PyDict_Next’ from incompatible pointer type
     while (PyDict_Next(adjdict, &i, &key, &adjlist)) {
                                 ^
In file included from /usr/include/python2.7/Python.h:101:0,
                 from src/pynauty.c:15:
/usr/include/python2.7/dictobject.h:114:17: note: expected ‘Py_ssize_t *’ but argument is of type ‘int *’
 PyAPI_FUNC(int) PyDict_Next(

, Чтобы зафиксировать это предупреждение, изменение

int i,j;

в src/pynauty.c к

Py_ssize_t i;
int j;

и повторно собрать pynauty. Предупреждение должно исчезнуть, и тесты должны пройти!

0
ответ дан 24 April 2015 в 12:27

Другие вопросы по тегам:

Похожие вопросы: