相关疑难解决方法(0)

GCC -fPIC选项

我已经阅读了GCC的代码生成约定选项,但无法理解"生成与位置无关的代码(PIC)"的作用.请举例说明一下这是什么意思.

c++ gcc options fpic

403
推荐指数
6
解决办法
23万
查看次数

CMAKE中添加-fPIC编译器选项的惯用方法是什么?

我至少有三种方法可以做到这一点,我想知道哪种方式是惯用的.这几乎普遍适用于任何静态库.我很惊讶CMake中的Makefile生成器不会自动将其添加到静态库中.(除非我错过了什么?)

target_compile_options(myLib PRIVATE -fPIC)

add_compile_options(-fPIC)

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpic")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpic")
Run Code Online (Sandbox Code Playgroud)

我相信可能还有其他变化.(如果你找到一个,请编辑我的问题)

如果您碰巧知道这个问题的答案,您是否也知道是否有办法使用此标志编译第三方CMake项目而不修改其CMakeLists.txt文件?我遇到了缺少该标志的静态库.将静态库编译为动态库时会导致问题.

你得到:

relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
Run Code Online (Sandbox Code Playgroud)

c c++ cmake

89
推荐指数
2
解决办法
4万
查看次数

标签 统计

c++ ×2

c ×1

cmake ×1

fpic ×1

gcc ×1

options ×1