-fpic 与-fPIC的区别

前言

在编译动态库的时候,我们应该需要使用-fpic 或-fPIC参数。如下所示:

然后,使用gcc或g++ 命令生成动态库

pic 与PIC的异同

相同点:都是为了在动态库中生成位置无关的代码。通过全局偏移表(GOT)访问所有常量地址。程序启动时动态加载程序解析GOT条目。

不同点:如果链接的可执行文件的GOT大小超过计算机特定的最大大小,则会从链接器收到错误消息,指示-fpic不起作用;在这种情况下,请使用-fPIC重新编译。GOT大小根据操作系统的不同而大小不一样,SPARC上为8k,在AArch64上为28k,在m68k和RS / 6000上为32k。x86没有此限制。

总结

为了兼容各个系统,在生成位置无关的代码的时候,应该使用-fPIC参数。

参考资料

[1].https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options

-fpic 与-fPIC的区别相关推荐

  1. gcc -fpic 和 -fPIC 参数问题

    gcc -fpic 和 -fPIC 参数问题 目的:生成位置无关的代码. 位置无关代码(Position-Independent Code),则产生的代码中,没有绝对地址,全部使用相对地址,故而代码可 ...

  2. gcc动态库fPIC和fpic编译选项差异介绍

    作者以前并没有特别留意fPIC和fpic之间的差别,最近在aarch64服务器上编译遇到的一个问题,让自己好好的查询了一些资料,或许平常的开发人员并不容易遇到它,但愿对有缘的读者有一定帮助. 1)出动 ...

  3. -fpic与-fPIC

    Object文件 我们在Linux开发过程中经常会遇到Object file这个名词,你可以称之为对象文件.常见的对象文件有三种: 可重定位的对象文件(Relocatable file) 这是由汇编器 ...

  4. linux 内核fpic,浅谈-fPIC与-fpic

    -fPIC 作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code), 则产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意 ...

  5. Linux: fPIC与 pie 区别

    参考链接: https://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Code-Gen-Options.html#Code-Gen-Options https://st ...

  6. C++学习(三九二)-fPIC, -fpic, -fpie, -fPIE

    -fPIC与-fpic都是在编译时加入的选项,用于生成位置无关的代码(Position-Independent-Code),可以使得动态库可以被多个程序共享.这两个选项都是可以使代码在加载到内存时使用 ...

  7. 【Build】关于-fPIC, -fpic, -fpie, -fPIE的一点理解

    最近在编译动态库文件,用到-fPIC编译选项.查了下GNU的手册: -fpic Generate position-independent code (PIC) suitable for use in ...

  8. 关于-fPIC, -fpic, -fpie, -fPIE的一点理解

    最近在编译动态库文件,用到-fPIC编译选项.查了下GNU的手册: -fpic Generate position-independent code (PIC) suitable for use in ...

  9. 关于-fPIC, -fPIE的一点理解

    查了下GNU的手册 -fpic Generate position-independent code (PIC) suitable for use in a shared library, if su ...

最新文章

  1. Linux下的vim文本替换,Linux下文本的vim文本替换
  2. 机器人学习--F1TENTH弗吉尼亚大学无人驾驶课程
  3. 集群的可扩展性及其分布式体系结构(2)-下
  4. (转)淘淘商城系列——使用JsonView来格式化json字符串
  5. fastnest怎么一键排版_FastNEST数控编程组合排版与技巧探讨
  6. Swift 编程语言
  7. github fork自己的库,如何同步源库的更新
  8. (转)简体繁体转换代码(Big5-GB | GBK简体-GBK繁体)
  9. 简单的图形识别python
  10. 用Sympy计算高次方程的判别式
  11. ANN to SNN
  12. Nginx反向代理汇总
  13. win10 锁屏界面自动更换壁纸的办法,亲测有效
  14. 多基站wifi混合定位
  15. node-gyp rebuild 报错处理
  16. origin ‘http://localhost:8080‘ has been blocked by CORS policy: Request header field platform is not
  17. 计算机录音机应用程序在哪,win10电脑自带录音在哪里打开
  18. background-clip属性详解
  19. buffon针的概率算法
  20. EtherCAT运动控制卡小线段前瞻的连续插补运动

热门文章

  1. 2012年系统架构师考试题详解
  2. Android实现沉浸式状态栏(透明状态栏)(QQ和简书样式)
  3. 一文讲清推荐算法原理
  4. python找到字符中空格所在的位置_python查找空格和中文
  5. linux下usb2.0更快,Linux平台PK:USB2.0与3.0闪存盘谁强?
  6. ffmpeg_parse_options命令行解析
  7. 服务器意外断电系统崩溃,Docker 实例不能正常启动 可能诱因:服务器意外断电 操作系统故障 运维操作有误...
  8. 最简单的细胞比计算机还复杂,人类的科技文明是否真的就是宇宙中的唯一,外星人有可能不存在...
  9. 对账系统,这下彻底搞清楚了!
  10. 计算机平面设计单招的分数线,单招分数线一般多少 多少分以下适合单招