最新要闻
- 全球百事通!家电行业周报:三大白电4月空冰洗排产数据较好
- 每日简讯:提前十一天!《塞尔达传说:王国之泪》意外偷跑:模拟器可玩
- 终于像是“次世代”了:微软为Xbox开发新版UI
- 高质量发展调研行丨产业集群提速 项目建设正酣-天天快资讯
- 五一返程注意!暴雨大暴雨要来了:华东、华中将现今年来最强降雨_环球快讯
- 世界微资讯!特斯拉差点破产:马斯克入选瑞典“失败博物馆”
- 曝小鹏“自动驾驶”避让大车险冲出高架 客服回应:会反馈核实|世界播资讯
- 时讯:失业潮或在路上!IBM计划用AI取代7800个岗位
- 环球观焦点:5月24开播!美版《西游ABC》来了:杨紫琼演观音 吴彦祖演美猴王
- 天天热头条丨傅欢俱乐部赛事达成200次出场,中超175场,中甲25场
- 频频把辅助驾驶当成自动驾驶:一嘴硬的理想车主撞了-全球热门
- 云南母鸡山服务区冲厕出现红水吓跑小孩:工作人员释疑 长见识 全球即时
- 对标苹果!微软自研Arm芯片在路上了|天天播报
- 靠增程抢的充电桩 凭什么让给纯电? 当前速讯
- 今亮点!AI组建社交鬼城 所有人类禁止入内:上万AI自主聊天!
- 加快IPv4退网:我国IPv6从能用到好用了_当前速看
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
gcc/g++编译 全球最新
gcc/g++编译
gcc
本节来自「参考1」
简介
GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言,它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的 Mercury 语言等。
(资料图)
而 GCC 也不再单只是 GNU C 语言编译器的意思了,而是变成了 GNU Compiler Collection也即是 GNU 编译器家族的意思了。另一方面,说到 GCC 对于操作系统平台及硬件平台支持,概括起来就是一句话:无所不在。
编译
示例:
//test.c#include int main(void){ printf("Hello World!\n"); return 0;}
一行命令编译:
gcc test.c -o test
实质上,上述编译过程是分为四个阶段进行的:
- 预处理(也称预编译,Preprocessing)
- 编译(Compilation)
- 汇编 (Assembly)
- 连接(Linking)
预处理
gcc -E test.c -o test.i# 或gcc -E test.c
- 可以输出test.i文件中存放着test.c经预处理之后的代码。预处理结果就是将stdio.h(头文件)文件中的内容插入到test.c中了。
- gcc -E:可以让编译器在预处理后停止,并输出预处理结果,即直接在命令行窗口中输出预处理后的代码。
编译
即将预处理后程序test.i编译为汇编程序test.s。
gcc -S test.i -o test.s
- gcc -S:表示在程序编译期间,在生成汇编代码后停止
- -o:输出汇编代码文件
汇编
即将汇编程序test.s编译为目标文件test.o:
gcc -c test.s -o test.o
连接
gcc连接器是gas提供的,负责将程序的目标文件与所需的所有附加的目标文件连接起来,最终生成可执行文件。
附加的目标文件:静态连接库和动态连接库
将test.o与C标准输入输出库进行连接,最终生成程序test:
gcc test.o -o test
多文件编译
通常整个程序是由多个源文件组成的,相应地也就形成了多个编译单元,使用GCC能够很好地管理这些编译单元。
假设有一个由test1.c和test2.c两个源文件组成的程序,为了对它们进行编译,并最终生成可执行程序test,可以使用下面这条命令:
gcc test1.c test2.c -o test
如果同时处理的文件不止一个,GCC仍然会按照预处理、编译和链接的过程依次进行。如果深究起来,上面这条命令大致相当于依次执行如下三条命令:
gcc -c test1.c -o test1.ogcc -c test2.c -o test2.ogcc test1.o test2.o -o test
如果文件更多的话,考虑使用cmake或者make工具,具体「参考2」
检查
- pedantic
gcc -pedantic illcode.c -o illcode
-pedantic:并不能保证被编译程序与ANSI/ISO C标准的完全兼容,它仅仅只能用来帮助Linux程序员离这个目标越来越近。
-pedantic选项能够帮助程序员发现一些不符合 ANSI/ISO C标准的代码,但不是全部,事实上只有ANSI/ISO C语言标准中要求进行编译器诊断的那些情况,才有可能被GCC发现并提出警告。
- Wall
gcc -Wall illcode.c -o illcode
-Wall:能够使GCC产生尽可能多的警告信息。
- Werror
gcc -Werror test.c -o test
-Werror:GCC会在所有产生警告的地方停止编译,迫使程序员对自己的代码进行修改
外部库连接
开发软件时,完全不使用第三方函数库的情况是比较少见的,通常来讲都需要借助许多函数库的支持才能够完成相应的功能。
从程序员的角度看,函数库实际上就是一些头文件(.h)和库文件(so、或lib、dll)的集合。虽然Linux下的大多数函数都默认将头文件放到/usr/include/目录下,而库文件则放到/usr/lib/目录下;Windows所使用的库文件主要放在Visual Stido的目录下的include和lib,以及系统文件夹下。但也有的时候,我们要用的库不再这些目录下,所以GCC在编译时必须用自己的办法来查找所需要的头文件和库文件。
例如程序test.c是在linux上使用c连接mysql,这个时候我们需要去mysql官网下载MySQL Connectors的C库,下载下来解压之后,有一个include文件夹,里面包含mysql connectors的头文件,还有一个lib文件夹,里面包含二进制so文件libmysqlclient.so,其中inclulde文件夹的路径是/usr/dev/mysql/include,lib文件夹是/usr/dev/mysql/lib。
Linux下的库文件分为两大类分别是动态链接库(通常以.so结尾)和静态链接库(通常以.a结尾),二者的区别仅在于程序执行时所需的代码是在运行时动态加载的,还是在编译时静态加载的。
编译
编译test.c为目标文件:
gcc –c –I /usr/dev/mysql/include test.c –o test.o
链接
把所有目标文件链接成可执行文件:
gcc –L /usr/dev/mysql/lib –lmysqlclient test.o –o test
其中:
- gcc -l(小写L):表示指定具体的库
- gcc -I(大写i):添加自定义的头文件路径
- gcc -L(大写L):添加自定义的库文件路径
下面以GMP为例:
GMP库已经编译安装完成,头文件在(/usr/local/include),库文件在(/usr/local/lib)
程序:
#include #include void foo(mpz_t result, const mpz_t param, unsigned long n){ unsigned long i; mpz_mul_ui(result, param, n); for (i = 1; i < n; i++) mpz_add_ui(result, result, i * 7);}int main(void){ mpz_t r, n; mpz_init(r); mpz_init_set_str(n, "123456", 0); foo(r, n, 20L); gmp_printf("%Zd\n", r); return 0;}
编译链接:
gcc test1.c -o test1 -lgmp
强制使用静态库
默认情况下, GCC在链接时优先使用动态链接库,只有当动态链接库不存在时才考虑使用静态链接库,如果需要的话可以在编译时加上-static选项,强制使用静态链接库。
例如:在/usr/dev/mysql/lib目录下有链接时所需要的库文件libmysqlclient.so和libmysqlclient.a,让GCC在链接时只用到静态链接库:
gcc –L /usr/dev/mysql/lib –static –lmysqlclient test.o –o test
静态库链接时搜索路径顺序:
- 先去找GCC命令中的参数-L
- 再找gcc的环境变量LIBRARY_PATH
- 再找内定目录 /lib、/usr/lib、/usr/local/lib、/usr/local/lib64等
动态链接时、执行时搜索路径顺序:
- 编译目标代码时指定的动态库搜索路径
- 环境变量LD_LIBRARY_PATH指定的动态库搜索路径
- 配置文件/etc/ld.so.conf中指定的动态库搜索路径
- 默认的动态库搜索路径/lib
- 默认的动态库搜索路径/usr/lib
有关环境变量:
- LIBRARY_PATH:指定程序静态链接库文件搜索路径
- LD_LIBRARY_PATH:指定程序动态链接库文件搜索路径
参考
- Linux GCC常用命令
- make学习
关键词:
gcc/g++编译 全球最新
全球百事通!家电行业周报:三大白电4月空冰洗排产数据较好
每日简讯:提前十一天!《塞尔达传说:王国之泪》意外偷跑:模拟器可玩
终于像是“次世代”了:微软为Xbox开发新版UI
高质量发展调研行丨产业集群提速 项目建设正酣-天天快资讯
五一返程注意!暴雨大暴雨要来了:华东、华中将现今年来最强降雨_环球快讯
世界微资讯!特斯拉差点破产:马斯克入选瑞典“失败博物馆”
曝小鹏“自动驾驶”避让大车险冲出高架 客服回应:会反馈核实|世界播资讯
时讯:失业潮或在路上!IBM计划用AI取代7800个岗位
环球观焦点:5月24开播!美版《西游ABC》来了:杨紫琼演观音 吴彦祖演美猴王
天天热头条丨傅欢俱乐部赛事达成200次出场,中超175场,中甲25场
频频把辅助驾驶当成自动驾驶:一嘴硬的理想车主撞了-全球热门
云南母鸡山服务区冲厕出现红水吓跑小孩:工作人员释疑 长见识 全球即时
对标苹果!微软自研Arm芯片在路上了|天天播报
靠增程抢的充电桩 凭什么让给纯电? 当前速讯
环球观察:学系统集成项目管理工程师(中项)系列16a_风险管理(上)
今亮点!AI组建社交鬼城 所有人类禁止入内:上万AI自主聊天!
加快IPv4退网:我国IPv6从能用到好用了_当前速看
靠增程抢的充电桩 凭什么让给纯电?
苹果版“余额宝”开局迅猛!Apple Card四天吸金69亿元_天天报资讯
全球球精选!刘亦菲国籍能改回来吗 刘亦菲国籍
【经验分享】使用Windows自带Xbox显示游戏帧率
美国4月ISM制造业环比上升但连续六个月萎缩,Markit制造业重回扩张
23年4月新能源汽车品牌销量排名来了 埃安、理想杀疯了|焦点资讯
超越《长空之王》!电影《人生路不熟》成劳动节单日票房冠军
【全球新视野】特斯拉又“失控” 车头撞没:这次不是单踏板的祸 别克变道所致网友称可怜
国内票房破4亿!《长空之王》国外口碑解禁:老外狂赞 歼20等精彩
孙殿义_环球新资讯
热资讯!孙楼村
算法3:质数的个数-全球观察
【世界报资讯】扛起农业大市担当 打造新时代鱼米之乡实践样板
视点!小米汽车可期!网友在厦门4S店偶遇卢伟冰
男子路边尝大爷樱桃没买被收2元直呼憋气 主动让尝:网友吐槽坑
全球聚焦:找段错误找了一个小时,纪念一下
环球今热点:2023-05-01:给你一个整数 n , 请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...]
20 文件系统的格式化操作_世界聚看点
天天热点评!详解 HTTPS 概念
当前快播:荷兰一男子疯狂捐精成550个孩子的爸爸:被判禁止捐精 再捐每次罚款76万
环球实时:吉利副总裁:不管极氪蔚来 中国品牌总要有一个打BBA的
当前简讯:男子订民宿被毁约 房东:住满了 没办法
定制长沙独家游玩攻略,大学生手绘旅游地图 世界今日讯
Mac M芯片使用PD安装centos7无页面安装
环球观点:自研“北斗高精”!百度地图宣布攻破“宇宙最难”8D重庆隧道导航
天天动态:米粉直呼Redmi Note 12 Turbo续航太顶:亮屏4小时耗电才33% 用的还是流量
焦点速递!斗图冯骥才看了答案。
天天微速讯:C# 基础编程题集锦
最近公共祖先 倍增算法
《长空之王》无悬念领跑!五一档新片总票房破10亿元:你贡献多少?
赢麻了!DC:黑人版《超人》有望成为现实
金帝纯黑68%巧克力薄片2盒19.9元:浓醇美味
全球今亮点!山东齐鲁工业大学官网招生计划 山东齐鲁工业大学官网
【天天快播报】新系统基于鸿蒙!华为海外发布4G新机Nova 11i:搭载骁龙680、2200元
时讯:高速上2车追尾洒落大量现金 场面壮观:网友直呼想停车去捡 目击者称是冥币
气温骤降超10℃!新一轮冷空气来袭:局地暴雨大雪 环球快看
全球球精选!Win11虚拟桌面切换动画终于回归!可惜依然生硬
天天视讯!“五一”去怒江,穿越东方大峡谷
最低分辨率仅648P!《星战绝地:幸存者》PS5版优化同样翻车_环球微动态
关注:大学选课是啥_大学选课是什么意思
国内普工月薪1万块 父母看病报销!马斯克称特斯拉每个人都是工人 经济严重衰退将来临|全球球精选
今年五一国人太疯狂!珠穆朗玛峰凌晨两点还在堵 手冻肿还有人插队 观天下
新消息丨lua基础语法篇一
5年级上册语文书课文_5年级上册语文书
【天天新视野】《饥饿游戏》美女演员晒照反击黑客勒索:我想展示给谁看都行
《英雄联盟》人机“智商”将升级:会打野抢龙了-每日时讯
苹果的糖煮制脯技术 下_关于苹果的糖煮制脯技术 下的简介
人类希望!星舰并未失败 今年砸20亿美元重发射 马斯克详解爆炸细节厉害了
LC 3. 无重复字符的最长子串 全球实时
世界实时:SRIO接口卡航电总线解决方案
Java线程池中的四种拒绝策略
全球播报:我在画画的拼音_画画的拼音
这波太狠了!CMA禁止微软在未来10年内收购动暴 热点聚焦
世界看热讯:中文互联网青春流落“天涯”
资讯推荐:山东一景区霸气公告:看不到景观退款
天玑之王诞生!iQOO Neo8 Pro前瞻:性能霸榜安卓阵营
快看:真鞋底“烤机”!男子鞋里藏48块CPU入境被海关查获
速看:恐难回本:《圣斗士》电影日本上映3天票房仅250万
关于Linux系统-sshd服务-AllowUsers与AllowGroups-选项的安全加固配置
工厂方法与FactoryBean
9472米!我国开钻亚洲最深油气井
今日讯!apex英雄手游版什么时候上线 apex英雄手游上线时间一览
70%的人都没做到!夏季开空调前的这些事项必须做到位_环球新要闻
韩国芯片继续暴跌:三星等存储没人买!国产SSD无惧竞争 2TB杀到489元
全球微速讯:终于改了!微软决定减少Win11通知数量
海南一漂流景区五一堵船了 网友:好像在下饺子一样
短讯!孙晓玲
多亏了国产SSD!硬盘进入“白菜价”时代
当前资讯!3人合吃一份自助餐:服务员劝阻被怼
苹果华为小米OPPO和vivo手机壳只要5.9元起:覆盖上百款机型 总有一款适合你
回力2023春季新款老爹运动鞋到手29.9元起:舒适透气_全球看点
马里奥成就游戏改编作品之最_天天热资讯
“五一”假期第二天全国道路交通总体平稳有序-全球最新
马里奥成就游戏改编作品之最
环球快消息!疯狂!淄博烧烤店主为劝退游客自己刷差评 犄角旮旯里的烧烤店都能被发现
锐龙7000系烧毁问题解决:AMD推送AGESA 1.0.0.7 BIOS主板固件更新
2020赛季中超第一阶段第11轮苏州赛区的一场比赛 由河北华夏幸福对阵北京国安
国屏之光!京东方首发三百色域切换显示技术
环球消息!五一长沙排队:景点队伍排到隔壁景区 凌晨2点打车还得等位
Redmi 2023年快充之王来了!210W新机已在路上|天天通讯
QLC尚未普及HLC又来!写入寿命堪忧
生死狙击v8真号账号密码没人挤2022(生死狙击好号和密码v8真的电脑版)