为了账号安全,请及时绑定邮箱和手机立即绑定

PyCarl 的 cmake 构建过程失败,并要求使用 -fPIC 重新编译

PyCarl 的 cmake 构建过程失败,并要求使用 -fPIC 重新编译

宝慕林4294392 2022-06-02 17:31:42
我正在使用 ubuntu 19.04 docker 的 docker 来安装 PyCarl。我有 carl 和 carl-parser(master14 版本)。但是,“python setup.py develop”命令在 setup.py 中失败,并带有退出代码为 2 的 calledProcessException。初始命令为:subprocess.check_output(['cmake', '--build', '.', '--target', ext.name] + build_args, cwd=self.build_temp)归结为:cmake --build . --target core --config Release -- -j4但是,我最终得到了一个退出代码为 2 的 CalledProcessError。任何帮助建议我可能出现错误的地方都会有很大帮助。此外,上述错误似乎是由于评论中建议的先前未解决的错误。root@196abd768845:/pycarl# python setup.py developrunning developrunning egg_infowriting lib/pycarl.egg-info/PKG-INFOwriting dependency_links to lib/pycarl.egg-info/dependency_links.txtwriting top-level names to lib/pycarl.egg-info/top_level.txtreading manifest file 'lib/pycarl.egg-info/SOURCES.txt'reading manifest template 'MANIFEST.in'writing manifest file 'lib/pycarl.egg-info/SOURCES.txt'running build_extPycarl - Using carl with master14 branch.Pycarl - Using carl 14.18.10 from /carl/buildPycarl - 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我确实尝试export CXXFLAGS="$CXXFLAGS -fPIC"过,但这并没有解决错误。补充2:感谢您的投入。但我可以看到 .a 和 .so 都存在于库中。那么为什么不选择共享的呢?或者我怎样才能动态链接它?我试过 LD_LIBRARY_PATH 但它没有解决它。
查看完整描述

1 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

我想我想通了。Carl 安装了 gmp 6.2.1,因为它发现默认的 gmp tp 是 6.0.0。我所要做的就是将路径(即,LD_RUN_PATHLD_LIBRARY_PATH,对于像我这样的菜鸟)链接到那个文件夹(这是carl/build/resources/lib给我的)。

查看完整回答
反对 回复 2022-06-02
  • 1 回答
  • 0 关注
  • 181 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号