gcc编译选项
admin
2023-08-02 12:00:07
0


(1)fpic 和 fPIC 区别

在64位下编译动态库的时候,经常会遇到下面的错误

/usr/bin/ld: /tmp/ccQ1dkqh.o: relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC


Use -fPIC or -fpic to generate code. Whether to use -fPIC or -fpic to generate code is target-dependent. The -fPIC choice always works, but may produce larger code than -fpic (mnenomic to remember this is that PIC is in a larger case, so it may produce larger amounts of code). Using -fpic option usually generates smaller and faster code, but will have platform-dependent limitations, such as the number of globally visible symbols or the size of the code. The linker will tell you whether it fits when you create the shared library. When in doubt, I choose -fPIC, because it always works.


-fPIC: 总是能够工作,但可能产生的代码较大

-fpic: 通常能产生更快更小的代码,但有平台限制。



(2)编译选项 -static 的作用

gcc编译选项gcc编译选项



(3)-march 指定目标架构选项

-march选项就是就是指定目标架构的名字,gcc就会生成针对目标架构优化的目标代码,如-march=prescott会生成针对i5或i7的目标码,从而充分发挥cpu的性能。

自gcc4.2,引入了 -march=native ,从而允许编译器自动探测目标架构并生成 针对目标架构优化的目标代码 ,这比手工设置要安全的多。

通过下面的命令查询当前机器的架构名称,比如:


#gcc -march=native -Q --help=target | grep march

 -march=                     haswell


有的时候编译会报 "no such instruction", (没有这个机器指令)

解决的方案:

1.makefile 中删掉 -march=native

2.找到正确的目标框架名称设置


相关内容

热门资讯

张嘉益、海清、任素汐,他们的本... 今天(7月10日)起,电视剧的演员署名正式告别艺名,使用法定姓名,并按笔画排序。观众或将重新认识一批...
打着“产学官合作”旗号,日本加... 据凤凰卫视援引共同社报道,日本政府初步决定最快2030年度建设军民两用技术研究据点。据报道,这项安排...
多名艺人集体公开讨薪、追债,太... 【文/观察者网 阮佳琪】7月9日,“多名艺人发声讨债”词条登上微博热搜。当天凌晨,通过《星动亚洲》等...
LG立式空调通电后跳闸 1、可能是电路板上面的压敏电阻坏了。2、如果其他功能如送风不跳闸,就是室外机风机或压缩机有问题。3、...
万能空调遥控器lg代码 万能空调遥控器是一种兼容多种品牌型号的遥控器,通过简单的设定,就能够使用它来控制您的空调。下面是万能...
lg空调遥控器有显示但打不开空... 1、lg空调控制器上的拨钮未拨到适当位置,如拨到较高的位置上,房间内的温度尚未达到空调设定温度上限值...
立式空调不制冷的原因及解决办法 原因可能是空调的制冷剂不足,可以给空调加氟解决;原因可能是空调的室内外传输系统出现短路的状况,可以检...
变频空调拆装会损坏电路板吗 不会。1、拆卸室内机需要注意,拆卸过程中注意防止冷凝水进入线路板很重要。2、拆卸室外机方面需要清楚,...
公共场所的艺术品吓到了人,谁的... 澎湃新闻记者 陆林汉 黄松最近,上海东方绿舟的48个“池中人”玻璃雕像因“有点吓人”被不少网友吐槽,...
一枚炸弹、一名女杀手,2.2亿... ·左图:瓦季姆·叶尔莫拉耶夫;右图:排爆小组在爆炸现场处置。(盖蒂图片社)当地时间6月29日,摩纳哥...