stderr@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
时间: 2024-09-22 21:05:29 浏览: 81
C/C++中宏/Macro的深入讲解
这个错误信息 "stderr@@GLIBC_2.2.5' cannot be used when making a shared object; recompile with -fPIC" 出现在编译动态链接库(shared object)的过程中,通常与Linux的GNU C Library (glibc) 版本有关。
`stderr` 是标准错误输出的别名,而 `GLIBC_2.2.5` 表示程序试图链接的某个函数或数据结构依赖于 glibc 的2.2.5版本,但在当前的编译环境中,该库没有包含 `-fPIC` 标志生成位置无关代码(Position Independent Code)。这通常是由于:
1. 你的源代码中包含了需要运行时定位的代码,例如动态加载的部分,需要编译时启用 `-fPIC` 选项以便生成可以放在共享库中的代码。
2. 编译命令中没有指定 `-fPIC` 或者没有设置适当的配置使得链接器能识别到需要这种编译模式。
解决这个问题的方法是在编译时添加 `-fPIC` 参数,特别是如果你正在构建的目标是一个需要与其他模块共享的对象文件或者打算部署在不需要特定glibc版本的系统上。比如,在Makefile或C/C++编译命令行中加入:
```sh
gcc my_code.c -shared -fPIC -o my_shared_object.so
```
阅读全文