Процесс сборки завершается неудачно в cmake для PyCarl, и его попросили пересобрать с -fPIC - PullRequest
1 голос
/ 22 сентября 2019

Я использую докер ubuntu 19.04 для установки PyCarl.У меня есть carl и carl-parser (версия master14).Тем не менее, команда «python setup.pyvelop» завершается неудачно в setup.py с вызваннойProcessException с кодом выхода 2. Начальная команда:

subprocess.check_output(['cmake', '--build', '.', '--target', ext.name] + build_args, cwd=self.build_temp)

, которая сводится к:

cmake --build . --target core --config Release -- -j4

Тем не менее, я заканчиваю CalledProcessError с кодом выхода 2. Любая помощь в подсказке, где может быть ошибка, будет очень полезна.

Please see the bottom of the screenshot for the described error

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

root@196abd768845:/pycarl# python setup.py develop
running develop
running egg_info
writing lib/pycarl.egg-info/PKG-INFO
writing dependency_links to lib/pycarl.egg-info/dependency_links.txt
writing top-level names to lib/pycarl.egg-info/top_level.txt
reading manifest file 'lib/pycarl.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'lib/pycarl.egg-info/SOURCES.txt'
running build_ext
Pycarl - Using carl with master14 branch.
Pycarl - Using carl 14.18.10 from /carl/build
Pycarl - carl parser extension from  included.
Pycarl - Support for CLN found and included.
Pycarl - CMake args=['-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/pycarl/lib/pycarl/', '-DPYTHON_EXECUTABLE=/usr/bin/python3', '-DCMAKE_BUILD_TYPE=Release', '-Dcarl_DIR=/carl/build']
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libgmpxx.a(osdoprnti.o): relocation R_X86_64_PC32 against symbol `__gmp_allocate_func' can not be used when making ashared object; recompile with -fPIC
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libgmpxx.a(osfuns.o): relocation R_X86_64_PC32 against symbol `_ZNKSt5ctypeIcE8do_widenEc' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libgmp.a(memory.o): relocation R_X86_64_PC32 against symbol `stderr@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC

Вышеприведенное продолжается для многих переменных.и, наконец, отображает:

/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libgmp.a(randmt.o): relocation R_X86_64_PC32 against symbol `__gmp_free_func' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: nonrepresentable section on output
collect2: error: ld returned 1 exit status
make[3]: *** [CMakeFiles/core.dir/build.make:142: ../../lib/pycarl/core.cpython-37m-x86_64-linux-gnu.so] Error 1
make[2]: *** [CMakeFiles/Makefile2:295: CMakeFiles/core.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:307: CMakeFiles/core.dir/rule] Error 2
make: *** [Makefile:196: core] Error 2

Я пробовал export CXXFLAGS="$CXXFLAGS -fPIC", но это не помогло устранить ошибку.

Дополнение 2: Спасибо за ваш вклад, ребята.Но я вижу, что .a и .so присутствуют в библиотеке.Так почему же он не выбирает общий?Или как я могу динамически связать это?Я пытался LD_LIBRARY_PATH, но это не решает.

1 Ответ

0 голосов
/ 24 сентября 2019

Спасибо, что проложили дорогу @ Цыпарев и @ Darklighter .Я думаю, я понял это.Карл установил gmp 6.2.1, поскольку установил, что по умолчанию gmp tp равен 6.0.0.Все, что мне нужно было сделать, это связать путь (а именно, LD_RUN_PATH и LD_LIBRARY_PATH, для таких нубов, как я) к этой папке (которая для меня была carl/build/resources/lib).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...