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

https://stackoverflow.com/questions/16023637/difference-between-pic-vs-pie


-fpic

如果目标计算机支持,则生成适合在共享库中使用的位置无关代码(PIC)。
这样的代码通过全局偏移表(GOT)访问所有常量地址。
动态加载程序在程序启动时解析GOT条目(动态加载程序不是GCC的一部分;它是操作系统的一部分)。
如果链接的可执行文件的GOT大小超过了计算机特定的最大大小,则会从链接器中收到一条错误消息,指出 -fpic不起作用 在这种情况下,请重新编译-fPIC 代替。(在SPARC上,这些最大值为8k;在m68k和RS / 6000上,最大值为32k。386没有此限制。)
与位置无关的代码需要特殊的支持,因此仅在某些机器上有效。对于386,GCC支持PIC for System V,但不支持Sun 386i。为IBM RS / 6000生成的代码始终与位置无关。

设置此标志后,宏__pic____PIC__定义为1

-fPIC

如果目标机器支持,则生成与位置无关的代码,该代码适用于动态链接并避免对全局偏移表的大小进行任何限制。

此选项对m68kPowerPCSPARC有所不同。

与位置无关的代码需要特殊的支持,因此仅在某些机器上有效。

设置此标志后,宏__pic____PIC__定义为2。

-fpie
-fPIE

这些选项类似于 -fpic-fPIC,但是生成的位置无关代码只能链接到可执行文件中。

通常在以下情况下使用这些选项-pie 链接期间使用GCC选项。
-fpie-fPIE都定义了宏 __pie__和__PIE__

宏的值1-fpie 和2 -fPIE。

Linux: fPIC与 pie 区别相关推荐

  1. 你知道Linux和Unix的区别吗

    有很多初学Linux的人比较关心Linux和windows的区别,这里还有一点就是Linux Unix的区别,弄清楚一些区别有助于我们对操作系统的了解.这里叙述Linux Unix的区别. Linux ...

  2. linux与unix的区别_Linux与Unix

    linux与unix的区别 Linux与Unix. 两者之间有什么区别? (Linux vs Unix. What are the differences between the two?) If y ...

  3. Linux和Ubuntu的区别详解

    近有很多人问小编,Linux和Ubuntu的区别是什么,我们用户应该如何选择? 想知道Linux和Ubuntu的区别,首先我们要明白,什么是Linux,什么是Ubuntu. 下面就此问题,小编今天专门 ...

  4. linux桌面版和服务器版区别_简单普及一些linux和windows的区别,减少新入手一些云服务时的不适应...

    近一年,发的linux或者服务器之类的教程资源相对比较多,被问到一些令人头大的一些问题,也不知道怎么回答,可能需要稍微普及一点linux和windows的区别,虽然自己也是新人半桶水. 1.windo ...

  5. Mac 与 Linux Windows 常见使用区别

    Mac 与 Linux Windows 常见使用区别 1 常见命令 2 常见操作 3 常见问题 4 说明 本文记录一些mac和linux.windows之间常见的使用区别,以便于有需要的读者查阅,后续 ...

  6. Linux和其他操作系统的区别

    前言 这是我听老师讲课做的笔记,考试要看的. 这是视频地址 作者:RodmaChen 关注我的csdn博客,更多Linux笔记知识还在更新 为什么用Liunx系统 Linux和windows的区别 L ...

  7. linux与各操作系统的区别

    Linux和Windows的区别  和Linux一样,Windows系列是完全的多任务操作系统.它们支持同样的用户接口.网络和安全性.但是,Linux和Windows的真正区别在于,Linux事实上是 ...

  8. Unix、Linux、Windows操作系统的区别

    1.操作区别 linux区分大小写,windows在dos界面命令下不区分大小写: linux所有内容均以文件形式保存包括硬件,用户,而windows文件和硬件没什么关系,两个之间没有关联: wind ...

  9. TurboLinux入门教程:第六课Linux与其他操作系统的区别(转)

    TurboLinux入门教程:第六课Linux与其他操作系统的区别(转) 第六课 Linux 与其他操作系统的区别 目前运行在 PC 机上的操作系统主要有 Microsoft 的 MS-DOS . W ...

最新文章

  1. Web前端工程师的一些常见误区
  2. 提升玩家游戏体验与账户安全,是游戏行业网络方案是重中之重
  3. boost::basic_string_view相关的测试程序
  4. html卡片布局按钮,Material Design风格动态网格卡片布局UI设计
  5. 转载:.NET Memory Leak: XmlSerializing your way to a Memory Leak
  6. (11)Node.js 核心模块fs – 同步函数( synchronization )
  7. Each interface on the back of the fuselage
  8. HDU 3966 dfs序+LCA+树状数组
  9. XXL-API v1.1.1 发布,API管理平台
  10. Linux中ping脚本
  11. vhdl入门6分频器
  12. 数据中心SAN网络综合布线方案分析
  13. 一文让你理清导数、方向导数、梯度向量之间的关系~
  14. 不懂这显然您不专业!云计算术语大全
  15. [shell] find 指令的使用 (如:找到大于10M的文件)
  16. java 音频 合成_java 音频 合成
  17. 宽带服务器盒信号灯红色闪烁,光纤灯红色闪烁怎么解决(图文)
  18. c++中关于ceil向上取整和floor向下取整,‘/‘除法对整型的处理(详解)
  19. java集合 测试对TreeSet的使用
  20. CUDA thrust

热门文章

  1. Python对Excel文件多表对多表之间的匹配(两种不同表头)——之json版
  2. Linux下Socket编程之TCP原理
  3. 重定向和转发的区别(redirect和forward)
  4. python遇到错误跳过_python跳过错误
  5. 解决Setting property 'source' to 'org.eclipse.jst.jee.server的问题
  6. 深入CC3200(1)—芯片简介及学习方法
  7. 清北师哥推荐的CV/NLP 算法工程师培养计划,强无敌!
  8. 用户选择好用的投票小程序最有用的投票小程序微信推送里投票制作教程
  9. type="button" ,"submit" 的区别
  10. JPA和Spring-Data-JPA简介