侧边栏壁纸
博主头像
黑色閃光w博主等级

行动起来,活在当下

  • 累计撰写 28 篇文章
  • 累计创建 14 个标签
  • 累计收到 152 条评论

目 录CONTENT

文章目录

GCC编译C语言源文件如何带图标

黑色閃光w
2022-03-21 / 0 评论 / 2 点赞 / 3006 阅读 / 2879 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-09-12,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前言

编写好的C语言源文件,得通过编译器编译之后才能作为.exe可执行文件直接在Windows系统中运行。但是直接用Mingw或者TDM-GCC里面的命令行(gcc或者g++)编译出来的文件默认是没有图标的。image.png
和你前女友一样难看到不行。
那我们该如何给它带上自己好看的图标呢?

正文

1、先准备好一个ico图标文件。
推荐一个十分好用的图片转ico格式的在线网站,突出一个多快好省!

2、然后在ico文件同目录下建立一个文本文档,里面写入:

id ICON "图标文件名"

值得注意的是,代码前面一定要加id,不然会报语法错误。
然后把这个文本文档扩展名改为.rc。例如我这里的:
image.png
3、然后使用windres链接rc文件,链接输出文件扩展名为.o
在当前路径的CMD控制台输入:

windres -i "你的rc文件" -o "输出的链接图标文件.o"

例如:
image.png
然后我们就得到了这个。
image.png
4、最后使用gcc一起编译你的源程序和链接后的图标资源文件:

gcc 源程序.c 链接后的图标文件.o -o 编译输出的文件.exe

例如:
image.png

这个时候输出的文件就有图标了!

教程结束

特别说明

我们知道gcc/g++可以通过-m32和-m64参数来编译出32位或者是64位应用程序。而我们上面使用windres链接出来的文件也是分32或者64位的。正常情况下我们上面直接链接的图标文件的架构是跟随我们系统的,如果你是64位Windows系统那么链接出来的xxx.o文件也就是64位的(gcc/g++不用-m参数时编译也是一样跟随系统架构)。

但是如果说我们在编译指定架构可执行文件时,那么链接图标时也需要来指定架构,否则最后联合编译时会出错。

编译32位程序

先使用windres链接图标,命令行加上-F参数链接32位架构:

windres -i ico.rc -o ico32.o -F pe-i386

然后再一起编译(编译时加上-m32参数):

g++ -m32 main.cpp ico32.o -o Main32.exe

编译64位程序

使用windres链接图标指定64位架构:

windres -i ico.rc -o ico64.o -F pe-x86-64

然后一起编译(使用-m64参数指定64位程序):

g++ -m64 main.cpp ico64.o -o Main64.exe


可见链接图标时指定架构就是windres命令加上-F参数即可,-F后面为pe-x86-64则指定链接为64位的资源文件,为pe-i386则指定链接为32位资源文件。

关于GCC参数的使用说明

2

评论区