【问题标题】:What does the -fPIC compilation flag does?-fPIC 编译标志有什么作用?
【发布时间】:2017-01-05 01:07:00
【问题描述】:

-fpic 标志有什么作用? 我想安装一个库 (OpenSFM),据说它需要使用 -fPIC 编译标志构建和安装的 Ceres Solver。

问题是我已经安装了没有 -fPIC 标志的 Ceres Solver,其他库已经依赖它。我该如何解决这个问题?

【问题讨论】:

  • -fPIC 为共享库生成位置无关代码。共享库的替代方法是使用静态链接
  • 这与 CMake 无关。 -fPIC 不是 CMake 标志,而是编译器标志。

标签: shared-libraries compiler-flags


【解决方案1】:

可以在here 找到一个很好的关于 -fPIC 的解释。

我认为这里的主要问题是您是否仍然可以在不重建 Ceres Solver 的情况下继续安装 OpenSfM。据我所知,你不能。

您可以做的最直接的事情是重建 Ceres Solver 并重新安装 PIC 版本。

cmake .. -DCMAKE_C_FLAGS=fPIC \
   -DCMAKE_CXX_FLAGS=-fPIC \ 
   -DSOMEOTHERARGUMENTSTHATYOUMIGHTHAVE

让我们知道它是如何为您服务的。 :)

【讨论】:

  • 如果我卸载Ceres Solver,然后重新安装,会不会影响其他依赖它的库(这里是OpenCV)?
  • 使用 -fPIC 编译的库应该仍然兼容。
  • 我在从 github 源安装 eiskaltdcpp 时遇到了同样的问题。在 cmake 命令中设置这些标志后问题仍然存在。
猜你喜欢
  • 1970-01-01
  • 2014-02-04
  • 2015-12-10
  • 2013-12-26
  • 2011-10-05
  • 2016-04-25
  • 2018-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多