给GCC编译出来的可执行文件添加图标

简介: 给GCC编译出来的可执行文件添加图标

众所周知,我们使用Mingw或者TDM-GCC里面的命令行(gcc或者g++)编译出来的文件默认是没有图标的。那么应当如何给它加上图标呢?

网络异常,图片无法展示
|

1, 先准备好一个ico图标文件,然后在ico文件同目录下建立一个文本文档,里面写入:

1 ICON "图标文件名"

2,然后把这个文本文档扩展名改为rc。例如我这里的:

网络异常,图片无法展示
|

3,然后使用windres链接rc文件,链接输出文件扩展名为o:

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

例如我的:

网络异常,图片无法展示
|

4,最后使用g++一起编译你的源程序和链接后的图标资源文件:

g++ 源程序.cpp 链接后的图标文件.o -o 编译输出的文件.exe

例如我的:

网络异常,图片无法展示
|

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

除此之外,还有一点需要注意的是,我们知道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位资源文件。

c语言程序编译添加图标也是一样的,这里是以c++为例。

相关文章
|
9月前
|
存储 编译器 C语言
深入理解GCC 和 G++ 编译器
GCC 和 G++ 是 GNU 工具链中的核心编译器,支持 C 和 C++ 程序开发。本文详细介绍其编译流程、常用选项及动态链接与静态链接的区别。编译过程分为预处理、编译、汇编和链接四个阶段,每个阶段有特定任务和命令选项。常用选项如 `-E`、`-S`、`-c` 和 `-o` 分别用于预处理、生成汇编代码、生成目标文件和指定输出文件。动态链接节省空间且易于更新,但依赖运行时库;静态链接独立高效,但文件较大且更新困难。合理选择优化选项(如 `-O0` 至 `-O3`)可提升程序性能。掌握这些知识有助于开发者更高效地编写、调试和优化代码。
440 23
深入理解GCC 和 G++ 编译器
|
前端开发 C语言
gcc动态库升级
gcc动态库升级
|
编译器 Linux C语言
gcc的编译过程
GCC(GNU Compiler Collection)的编译过程主要包括四个阶段:预处理、编译、汇编和链接。预处理展开宏定义,编译将代码转换为汇编语言,汇编生成目标文件,链接将目标文件与库文件合并成可执行文件。
387 11
|
编译器 开发工具 C语言
Gcc 链接文件
Gcc 链接文件
125 4
|
编译器 C语言 C++
MinGW安装gcc
MinGW安装gcc
373 0
|
C语言
gcc的简易用法(编译、参数与链接)
【5月更文挑战第14天】gcc的简易用法(编译、参数与链接)。
135 1
|
自然语言处理 编译器 Go
GCC:GNU编译器
GCC:GNU编译器
331 0
|
Java 编译器 Linux
技术经验解读:【转载】详解GCC的下载和安装(源码安装)
技术经验解读:【转载】详解GCC的下载和安装(源码安装)
500 0
关于如何解决mingw64安装后配置完环境变量仍然执行不了gcc命令
关于如何解决mingw64安装后配置完环境变量仍然执行不了gcc命令
|
编译器 Linux 开发工具