tokenpocket钱包app苹果下载安装|gtc编译程序

作者: tokenpocket钱包app苹果下载安装
2024-03-11 00:48:40

AI 开发者盛会 | GTC 2024 | NVIDIA

AI 开发者盛会 | GTC 2024 | NVIDIA

培训 3 月 17 — 21 日 |  会议 3 月 18 — 21 日 |  主题演讲 3 月 18 日 | 美国加州圣何塞及 & 线上

我的帐户

登录

LogOut

简中

EN

한국어

日本語

繁中

简中

DE

FR

主题演讲

会议目录

日程

主题

演讲嘉宾

展厅

培训

与专家交流

海报展厅

与同行交流

参会

为何参加

价格

带上您的团队

赞助商 & 参展商

更多

旅行信息

常见问题

行为准则

包容性

隐私政策

联系我们

主题演讲

会议目录

日程

主题

演讲嘉宾

展厅

培训

与专家交流

海报展厅

与同行交流

参会

为何参加

价格

带上您的团队

赞助商 & 参展商

更多

旅行信息

常见问题

行为准则

包容性

隐私政策

联系我们

登录

立即注册

登录

Register

立即注册

主题演讲

会议目录

日程

日程

主题

演讲嘉宾

展厅

培训

与专家交流

海报展厅

与同行交流

参会

参会

为何参加

价格

带上您的团队

赞助商 & 参展商

更多

更多

旅行信息

常见问题

行为准则

包容性

隐私政策

联系我们

This site requires Javascript in order to view all its content. Please enable Javascript in order to access all the functionality of this web site. Here are the instructions how to enable JavaScript in your web browser.

卓越的头脑突破性发现

相聚 2024 GTC AI 大会

免费注册线上大会

重临现场或在线体验 GTC

与由业界大咖、开发人员、研究人员和商业策略专家组成的梦之队交流,共同塑造 AI 和加速计算的未来。 从备受期待的 NVIDIA CEO 黄仁勋的主题演讲到 900 多场鼓舞人心的会议、超过 200 家的展商、20 多场技术讲座,以及大量独特的交流活动, GTC 为不同技术水平和兴趣领域的参会者提供了丰富的内容。 无论是线下亲临现场还是在线参会,您都将享受到一场令人难以置信的盛会。 免费注册线上大会。

黄仁勋 | 创始人兼 CEO | NVIDIA

见证 AI 的变革时刻

GTC 主题演讲  |  3 月 19 日 星期二  |  4:00 — 6:00 (北京时间)

观看黄仁勋在美国加州圣何塞 SAP 中心的主题演讲,听他分享塑造未来的 AI 突破。

*现场参会需提前注册 GTC 线下大会

加入日程

中文内容精选推荐

China AI Day —— LLM 最佳实践和应用会议

NVIDIA 携手国内领先的云和互联网, 分享 NVIDIA 最新架构、软硬件协同优化的 LLM 全栈解决方案,从架构、训练、推理、量化,助力 LLM 性能极致优化...

查看会议

AI 驱动汽车科技创新发展会议

NVIDIA 从数据中心到车端的全栈解决方案,加速中国汽车行业自动驾驶与智能座舱 LLM 技术发展。NVIDIA 的技术专家将向大家分享过去一年为汽车生态合作伙伴快速发展做出的努力和成果...

查看会议

面向无限可扩展的高性能 AI 网络会议

数据中心已成为新的计算单元,网络定义现代数据架构的趋势已经明朗,网络决定了数据中心的总性能和扩展性,这需要全新的网络规范...

查看会议

AI 创业的“繁花”时代 —— GTC 创业企业特别会议

此会议特辑包含 3 场针对中国创业企业的特别讲演:AI 创业企业在中国的发展与助力 、创业企业在生成式 AI 方向的实践与分享、2024 年中国市场与创业企业的新机遇...

查看会议

企业级 AI 软件会议

此会议特辑内容包括加速数据中心和 AI 的软件及解决方案,适用于大模型训练,推理,对话式 AI,生成式 AI,AI 系统的管理,部署等技术方向,希望能够助力您和您企业的 AI 应用开发...

查看会议

OpenUSD Day 精选会议

了解如何使用 OpenUSD (通用场景描述) 构建 AI 驱动的 3D 工作流和工业数字化工具。由来自 NVIDIA、Adobe、Bentley Systems、Cesium、Pegatron、三星电子、西门子等企业的商业和技术领袖带来分享...

查看会议

NVIDIA Research 精选会议

通过以下 AI 研究与思想领袖精选会议, 向 AI 领域的智者学习,探索整个行业的突破性研究...

查看会议

上一步

下一页

China AI Day

DriveDevDay TA

Accelerating Automotive Workflows With Large Language Models

Intellectual Property Challenges in the Age of Generative AI

The Magic of Innovation: A Conversation With Disney Studios' CTOs

Regulating AI: Global Perspectives

Robotics in the Age of Generative AI

查看完整列表

转发分享

见证这些具有突破性意义的圆桌讨论

3 月 20 日(星期三) | 5:00 AM - 5:50 AM (北京时间)

推动企业转型:CIO 关于如何充分利用生成式 AI 潜力的宝贵见解

出席备受瞩目的小组讨论,倾听首席信息官介绍他们如何在自己的组织中使用生成式 AI。您将了解他们如何制定 AI 和转型计划,学习基本技能,并在数据治理、安全性、真实性和危害性方面为生成式 AI 部署设置“护栏”。

参加会议

3 月 21 日(星期四) | 11:00 PM - 11:50 PM (北京时间)

AI 驱动的药物研发:揭开生物复杂性的奥秘

这场小组讨论将带您探索生物学与人工智能的交叉融合,分析 AI(从图形机器学习到大语言模型)在药物研发领域发挥的变革性作用。

参加会议

3 月 20 日(星期三) | 5:00 AM - 5:50 AM (北京时间)

推动创新:生成式 AI 和工业数字化在汽车行业中的应用

与捷豹路虎、Waabi 和 Wayve 等知名车企的高层领导面对面,听他们讨论在其组织中引入生成式 AI 和工业数字化技术的经历。

参加会议

3 月 20 日(星期三) | 2:00 AM - 2:50 AM (北京时间)

生成式 AI 在现代医学中的作用

这场小组讨论将探讨为何生成式 AI 技术不仅仅是一种工具,更是重新定义医疗健康服务、发现新药物,以及改善患者治疗效果的关键推动力。

参加会议

Aechelon

Aechelon

3 月 19 日(星期二) | 1:00 AM - 1:50 AM (北京时间)

AI 监管:全球视角

世界各地的政府正在着手研究如何监管 AI 的开发、部署和使用。这场小组讨论将探索政府正在考虑采用的不同政策和监管方法,以及企业应如何解读这种快速变化的监管形势。

参加会议

3 月 20 日(星期三) | 7:00 AM - 7:50 AM (北京时间)

借助 OpenUSD 和生成式 AI,推动全球各大行业实现数字化

各行各业都有机会利用 3D 互联网加速实现自动化和数字化。在这场小组讨论中,一些主要的企业领袖和业界大咖将分享其工业元宇宙项目的最新进展,包括他们已实现的里程碑、接下来的开发重点,以及他们当前遇到的阻碍。

参加会议

3 月 19 日(星期二) | 5:00 PM - 5:50 PM (北京时间)

检索增强生成技术 (RAG):设计系统、数据和定制概述

这场小组讨论将探索如何利用 NVIDIA 技术来发挥 RAG 系统的潜力。这些系统将信息检索与生成模型相结合,从大型语料库中引用相关文档段落,然后将其用作生成详细答案的上下文。

参加会议

3 月 22 日(星期五) | 12:00 AM - 12:50 AM (北京时间)

我想知道的 AI 秘密

在这场备受瞩目的小组讨论中,经验丰富的专业人士、教育工作者和学术研究人员将齐聚一堂,深入探讨生成式 AI 在影响现代教育实践方面发挥的变革性作用。除了分享宝贵的见解和经验之外,这些专家还将讨论多种实际用例,重点介绍在各种教育情景中使用 ChatGPT 等高级 AI 工具的好处。

参加会议

上一步

下一页

panel1

panel2

panel3

panel4

panel5

panel6

panel7

panel8

Check Out Highlights From GTC 2023

聆听全球思想领袖的重要观点

Joelle Pineau

AI 研究副总裁

Meta

Brad Lightcap

首席运营官

OpenAI

Vincent Vanhoucke

杰出科学家兼机器人技术高级总监

Google DeepMind

李飞飞

斯坦福大学以人为本人工智能 (HAI) 研究院计算机科学红杉讲席教授兼 Denning Family 联席董事

斯坦福大学

Igor Babuschkin

联合创始人

xAI

Arthur Mensch

首席执行官

Mistral AI

Priscilla Chan

联合创始人兼联席 CEO

Chan Zuckerberg Initiative

Sébastien Bubeck

副总裁  

Microsoft GenAI  

查看更多演讲嘉宾

钻石精英赞助商

钻石赞助商

查看所有赞助商和参展商

学习、交流并获得灵感

获取实战培训

想在 AI、加速数据科学或加速计算方面培养关键技能? 通过 NVIDIA 深度学习培训中心 (DLI) 获取讲师指导式实战培训,并获得证明该主题领域能力的证书。

了解详情

Get hands-on training.

Want to develop key skills in AI, accelerated data science, or accelerated computing? Get hands-on instructor-led training from the NVIDIA Deep Learning Institute (DLI) and earn a certificate demonstrating subject matter competency.

加入我们的开发者社区

随着新创新成果的不断诞生,像您一样的开发者每天都在改变世界。NVIDIA 开发者计划可为您提供各种所需内容,助您加速毕生事业的发展。

立即加入

在 GTC 加速初创公司发展

NVIDIA 的 GTC 为您的初创公司提供交流机会、培训、专家小组以及来自世界领先的 AI 初创公司的演示,这些初创公司正在通过 GPU 加速的应用程序颠覆关键市场。 所有出席的初创公司都是 NVIDIA Inception 的成员,NVIDIA Inception 是 AI、数据科学、游戏、高性能计算和突破行业壁垒的领先加速平台。

查看 GTC 创业企业特别会议

上一步

下一页

dli

developer

startups

参会者对 GTC 的评价

听到为更多的激动人心的 AI/ML 创新的加速开发铺平了道路,真的很令人惊叹!

— GTC 参会者

GTC 已经成为一个平台,来推广他们为 AI 世界所打造的硬件,现在, GTC 也成为一个值得庆祝的时刻,来彰显 NVIDIA 此时此刻在 AI 领域的领导地位。

—  Devindra Hardawar, Engadget (美国)

GTC 对新技术的开发提供了深刻的见解。 为不远的将来会发生什么提供了更广泛的理解,并为采用新技术做好了准备。

— GTC 参会者

[NVIDIA] 在 GTC 2023 开发者大会上全力推进 AI 技术,推出新的服务和硬件,为一系列 AI 产品提供动力,以充分利用围绕生成式 AI 的热潮。

— Dan Howley, 雅虎财经 (美国)

上一步

下一页

q1

q2

q3

q4

请与我们一同成就未来。2024 年 3 月 18 — 21 日,期待与您在美国加州圣何塞会议中心再次相聚。

立即注册

分享 GTC 2024

AI 时代的大会

微博

微信

复制链接

互动

初创企业

与专家交流

演示

培训

发现

主题演讲

NVIDIA On-Demand

赞助商

更多

常见问题解答

行为准则

包容性

隐私政策

联系我们

#GTC22

NVIDIA

CHN - 中国

隐私声明

管理我的隐私

法律事宜

无障碍访问

产品安全性

联系我们

Copyright © 2024 NVIDIA Corporation

GCC编译C/C++程序(一步完成)

GCC编译C/C++程序(一步完成)

首页

C语言教程

C++教程

Python教程

Java教程

Linux入门

更多>>

目录

GCC

1

GCC是什么?

2

GCC编译器下载和安装教程(针对Linux发行版)

3

如何在Windows上使用GCC编译器?

4

如何用Sublime Text运行C和C++程序?

5

如何用VS Code运行C和C++程序?

6

GCC的组成部分以及使用到的软件

7

gcc和g++是什么,有什么区别?

8

GCC自动识别的文件扩展名(一览表)

9

GCC -std编译标准一览表

10

GCC编译C/C++程序(一步完成)

11

GCC -E选项:对源程序做预处理操作

12

GCC -S选项:编译非汇编文件

13

GCC -c选项:生成目标文件

14

GCC -o选项:指定输出文件

15

GCC -l选项:手动添加链接库

16

GCC分步编译C++程序(汇总版)

17

如何使用gcc指令一次处理多个文件?

18

GCC使用静态链接库和动态链接库

19

用GCC制作静态链接库

20

用GCC制作动态链接库

21

显示调用C/C++动态链接库

22

GCC找不到库文件怎么办?

首页 > GCC

GCC编译C/C++程序(一步完成)

 

通过前面章节的学习我们知道,GCC 编译器并未提供给用户可用鼠标点击的界面窗口,要想调用 GCC 编译器编译 C 或者 C++ 程序,只能通过执行相应的 gcc 或者 g++ 指令。本节将重点给大家讲解如何编写 gcc 或者 g++ 指令来编译 C、C++ 程序。

注意,在前面的讲解中我们一直提到“编译”C、C++ 程序,其本意指的是将 C、C++ 代码转变为可执行程序(等同于 Windows 系统中以 .exe 为后缀的可执行文件)。但实际上,C 或者 C++ 程序从源代码生成可执行程序的过程,需经历 4 个过程,分别是预处理、编译、汇编和链接。有关这 4 个过程的具体含义,读者可阅读《那些被编译器隐藏了的过程》一节做详细了解,这里不再做重复赘述。

同样,使用 GCC 编译器编译 C 或者 C++ 程序,也必须要经历这 4 个过程。但考虑在实际使用中,用户可能并不关心程序的执行结果,只想快速得到最终的可执行程序,因此 gcc 和 g++ 都对此需求做了支持。

首先以运行 C 语言程序为例,给大家演示如何使用 gcc 快速获得对应的可执行程序。如下就是一段 C 语言程序:

//存储在 demo.c 文件中

#include

int main(){

puts("GCC教程:http://c.biancheng.net/gcc/");

return 0;

}

如上所示,这是一个很简单的输出“Hello,World!”字符串的 C 语言程序,接下来打开命令行窗口(Terminal),编写如下 gcc 指令:

[root@bogon ~]# gcc demo.c

按下 Enter 回车键,由此 GCC 编译器就帮我们在当前目录下生成了对应的可执行文件,该文件的名称为 a.out,可以通过 ls 指令查看该文件是否存在:

[root@bogon ~]# ls

a.out    demo.c

#或许还有其他文件,这里不再一一列出

在此基础上,我们可以执行该文件,查看其执行结果,继续编写如下指令:

[root@bogon ~]# ./a.out

GCC教程:http://c.biancheng.net/gcc/

通过前面的学习我们知道,执行 C++ 程序和执行 C 语言程序不同的是,要么使用 g++ 指令,要么使用 gcc -xc++ -lstdc++ -shared-libgcc 指令。比如下面为一段简单的 C++ 程序:

//位于 demo.cpp 文件中

#include

using namespace std;

int main(){

cout << "GCC教程:http://c.biancheng.net/gcc/" << endl;

return 0;

}

运行此程序,可以编写如下指令并执行:

[root@bogon ~]# g++ demo.cpp  #或者 gcc -xc++ -lstdc++ -shared-libgcc demo.cpp

同样,GCC 编译器会在当前目录下生成一个名为 a.out 的可执行文件(如果之前有同名文件,旧文件会被覆盖)。通过如下指令即可运行该文件:

[root@bogon ~]# ./a.out

GCC教程:http://c.biancheng.net/gcc/

注意,gcc 或者 g++ 指令还支持用户手动指定最终生成的可执行文件的文件名,例如修改前面执行 C、C++ 程序的 gcc 和 g++ 指令:

[root@bogon ~]# gcc demo.c -o demo.exe

[root@bogon ~]# g++ demo.cpp -o democpp.exe   # 或者 gcc -xc++ -lstdc++ -shared-libgcc demo.cpp -o democpp.exe

其中 -o 选项用于指定要生成的文件名,例如 -o demo.exe 即表示将生成的文件名设为 demo.exe。

可以看到,GCC 编译器支持使用 gcc(g++)指令“一步编译”指定的 C(C++)程序。

注意,虽然我们仅编写了一条 gcc 或者 g++ 指令,但其底层依据是按照预处理、编译、汇编、链接的过程将 C 、C++ 程序转变为可执行程序的。而本应在预处理阶段、编译阶段、汇编阶段生成的中间文件,此执行方式默认是不会生成的,只会生成最终的 a.out 可执行文件(除非为 gcc 或者 g++ 额外添加 -save-temps 选项)。

对于初学者来说,可能需要深入探究 C、C++ 程序转变为可执行程序的整个过程,查看该过程中产生的中间文件。如此,上面介绍的执行方式将不再使用,而要采用分步编译的方式。

所谓“分步编译”,即由用户手动调用 GCC 编译器完成对 C、C++源代码的预处理、编译、汇编以及链接过程,每个阶段都会生成对源代码加工后的文件。

那么,到底如何分步编译 C、C++ 程序呢?事实上,GCC 编译器除了提供 gcc 和 g++ 这 2 个指令之外,还提供有大量的指令选项,方便用户根据自己的需求自定义编译方式。在前面的学习过程中,我们已经使用了一些指令选项,比如编译 C++ 程序时 gcc 指令后跟的 -xc++、-lstdc++、-shared-libgcc,再比如手动指定可执行文件名称的 -o 选项。

表 1 罗列出了实际使用 gcc 或者 g++ 指令编译 C/C++ 程序时,常用的一些指令选项:

表 1 GCC常用的编译选项

gcc/g++指令选项

功 能

-E(大写)

预处理指定的源文件,不进行编译。

-S(大写)

编译指定的源文件,但是不进行汇编。

-c

编译、汇编指定的源文件,但是不进行链接。

-o

指定生成文件的文件名。

-llibrary(-I library)

其中 library 表示要搜索的库文件的名称。该选项用于手动指定链接环节中程序可以调用的库文件。建议 -l 和库文件名之间不使用空格,比如 -lstdc++。

-ansi

对于 C 语言程序来说,其等价于 -std=c90;对于 C++ 程序来说,其等价于 -std=c++98。

-std=

手动指令编程语言所遵循的标准,例如 c89、c90、c++98、c++11 等。

注意,表 1 中仅列出了初学者常用的一些指令选项,事实上这仅是冰山一角,GCC 编译器提供有大量的指令选项,可满足我们在大部分场景下的编译需求。有关更多的编译指令,感兴趣的读者可自行查看 GCC 手册。

在表 1 的基础上,接下来将分章节对如何实现分步编译做详细的讲解,即如何将一个源代码程序经历预处理、编译、汇编以及链接这 4 个过程,最终生成对应的可执行程序。

 

推荐阅读

C++多态到底是什么(通俗易懂)

fread和fwrite函数,C语言fread和fwrite函数详解

Linux rmdir命令:删除空目录

Java try catch finally语句

PHP二维数组和多维数组

MySQL HAVING:过滤分组

C++文本文件读写操作详解

MongoDB分片

将PPT转换成Word(4个步骤)

C语言tanh():求双曲正切

精美而实用的网站,分享优质编程教程,帮助有志青年。千锤百炼,只为大作;精益求精,处处斟酌;这种教程,看一眼就倾心。

关于网站 |

联系我们 |

网站地图

Copyright ©2012-2023 biancheng.net

三分钟带你了解GTC - 知乎

三分钟带你了解GTC - 知乎首发于财经切换模式写文章登录/注册三分钟带你了解GTC币圈一级市场阿生如果你是某开源项目的发起者,或者你正在管理某 Github 开源项目的代码仓库,你可以在 Gitcoin 上发起 Issues 悬赏,这个 Issues 可能是修复某个 bug、开发某个功能或者解决某个安全问题,感兴趣的开发者就可以领取 Issues 悬赏,并在 Github 上进行代码协作。如果发起人接受了你提交的 Pull Request,悬赏绑定的 ETH 便会自动打到开发者的钱包地址里。简单来讲,Gitcoin 把 Github 上的开源协作机制代币化,现在他们则可以在兴趣与志愿之外,获得一点经济上的回报和奖励。项目背景Gitcoin 是一个开源软件开发激励平台,其愿景是通过区块链支持各类开源项目,促进开源运动的发展。Gitcoin 为各种规模的开源项目提供了寻求资金的平台和获得资金的机会。在每轮的 Gitcoin 捐助活动中,除了各项目收到的捐款外,Gitcoin 还会以此作为参考协调以太坊基金会的基金分配以便让优质项目获得投资的机会增加。代币概况GTC币是Gitcoin的管理代币,于 2021 年 5 月下旬发布。创建和资助将运行 Gitcoin 的 DAO 需要TOKEN。GTC当前价格是13.378,今日涨幅为 +34.24%,24h成价额是¥3.64亿。 GTC当前流通市值为¥7.55亿, 在加密货币市场排名 #--; GTC的总供应量为 10,000万GTC,当前市场流通量为1,419.82万GTC。代币分配2021 年 5 月 25 日,Gitcoin 宣布推出治理代币 GTC,可针对 Gitcoin DAO 进行治理投票或管理财政库。GTC 代币共 1 亿枚,其中 15% 将进行回溯空投、50% 属于 Gitcoin DAO、35% 属于现有的利益相关者。平台会定期开一轮捐助活动,每一轮持续时间大概15天,每一轮次开始之后,各类项目(平台会稍加筛选)会陆续把自己的创意和计划等信息展示在平台上,供社区投资者们挑选资助。每个项目最终可以获得两部分资助,一是来自社区投资者的捐助,捐款金额不限,小到1DAI也都是可以的。另一个是每一轮都会提供定量的赞助,比如这一轮是50万美金,这部分资金主要来自生态里面的成功项目、以太坊基金会、另外也会有些大户或圈内资本加入,像三箭这样的。项目特点二次方募资」一个为公共产品募资的新机制,这一创新机制就能令资助公共物品的过程既民主又符合市场规律。这一机制也多半适用于各种类型的线上社区。 二次方募资即通过为项目「匹配」资金令其获得一定量的捐赠和补贴。它依据的计算公式非常特别,即对于某给定的项目,先取其收到的每笔捐赠额的平方根,将这些平方根相加,最后取相加结果的平方输出,即为该项目所匹配到的的总资助额。 「二次方」募资的好处有二:其一,参与捐赠的人越多,匹配效果越好;其二,小额捐赠会被良好地匹配。 按照二次方募资的匹配机制,当参与者超过一人时,由平方根组成的总资助金额笔简单将每笔卷曾金额相加所得大得多,即越「公共」的物品获得的资助越多。二次方募资机制将大大增加该项目受益者的人均收益,这有助于缓解公地悲剧的负面影响。 此外,二次方募资还能使小额捐赠受到更大重视,这很大程度上避免了「富人主宰一切」的场面——毕竟 1 美元捐赠所获得匹配可能比 10000 美元捐赠所获的匹配还大。团队成员投资机构项目愿景Gitcoin旨在创建一个名为’二次方大陆‘(Quadratic Lands)的未来愿景,这是一个非常重视数字民主和社区建设的数字生态系统。此外,GTC币表示,他们的使命是创建一个开源、协作和经济赋能的互联网。他们为Web 3、各种工具、技术和网络构建社区和基础设施,使人们能够为开放的互联网工作。他们还表示,他们正在共同努力,通过资助项目、建立社区和提供学习资源来创建未来的数字公共基础设施。另一方面,GitcoinDAO 是一个社区运营的组织,将负责GTC币的未来。GitcoinDAO 旨在带领社区进入二次方土地,这是未来的理想状态,在那里公共物品得到民主分配和适当资助。AXA投研是币圈顶级的投研社区,与全球多家知名数字货币投资机构达成战略合作,拥有一支千万级的投资基金,曾参与多项顶级项目的种子轮投资,打造一个又一个币圈财富神话,AXABlock专注于国外优质项目的提前布局,致力打造币圈财富联盟,如果您对潜力百倍币感兴趣欢迎加入我们的社区一起讨论,群内有专注于区块链行业多年的老师给大家答疑解惑,帮助大家在市场更快成长。AXABlock中文电报公开群期待大家的加入。编辑于 2021-11-26 15:41财经比特币 (Bitcoin)区块链(Blockchain)​赞同 3​​添加评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录财经分享最新币圈消息以及暴涨

NVIDIA GTC 2024: What to Expect from Dell Technologies | Dell Chinese

NVIDIA GTC 2024: What to Expect from Dell Technologies | Dell Chinese

Skip to content

跳转至主要内容

登录

欢迎

戴尔站点

Dell Technologies

登录Premier

合作伙伴计划登录

支持

戴尔站点

Dell Technologies

登录Premier

合作伙伴计划登录

支持

APEX Console

帐户设置

注销

欢迎访问戴尔

我的帐户

支持

APEX Console

合作伙伴门户

Dell.com

Dell Premier

登录

创建帐户

联系我们

CN/ZH

APEX

返回

APEX

查看所有 APEX

计算和 HCI

返回

计算和 HCI

APEX Private Cloud

APEX Compute

存储

返回

存储

APEX Storage for Private Cloud

APEX Storage for Public Cloud

云平台

返回

云平台

APEX Cloud Platform for Microsoft Azure

APEX Cloud Platform for Red Hat OpenShift

APEX Cloud Platform for VMware

APEX 高性能计算

APEX PC-as-a-Service

创建定制解决方案

返回

创建定制解决方案

APEX 按需计费

APEX 数据中心设施

资源

返回

资源

APEX 应用场景

APEX 商业价值

APEX 可持续性

APEX 托管服务

APEX 合作伙伴

IT 基础架构

返回

IT 基础架构

产品

返回

产品

服务器

数据存储

数据保护

超融合基础架构

网络交换机

AIOps 和 IT 可观察性

工作负载

返回

工作负载

查看所有工作负载

分析

人工智能

云解决方案

数据管理

边缘解决方案

高性能计算

Kubernetes 和容器

安全解决方案

虚拟桌面基础架构

行业

返回

行业

查看所有行业

数字城市

能源、气候行动和可持续发展

财务

医疗保健和生命科学

高等教育

基础教育

零售业

安全与安保

电信

公用事业

支付和消费解决方案

开发人员和 DevOps

电脑和配件

返回

电脑和配件

笔记本

返回

笔记本

查看全部笔记本

XPS 笔记本

Latitude 笔记本

Inspiron 灵越笔记本

Vostro 成就笔记本

Alienware 外星人笔记本

游匣G系列游戏本

Precision 移动工作站

Latitude Rugged 笔记本

4G/5G 笔记本电脑

台式机和一体机

返回

台式机和一体机

查看全部台式机和一体机

XPS 台式机

OptiPlex 台式机和一体机

Inspiron 灵越台式机和一体机

Vostro 成就台式机

Alienware 外星人台式机

Precision 固定工作站

成铭台式机

显示器

返回

显示器

查看全部显示器

UltraSharp 显示器

超高清显示器

曲面显示器

Alienware 外星人和游戏显示器

专业办公显示器

显示器配件

游戏系列

返回

游戏系列

Alienware 外星人

戴尔游戏系列

游戏笔记本

游戏台式机

Alienware 外星人和游戏显示器

游戏配件

外设产品

返回

外设产品

查看全部外设产品

坞站

音频设备

键盘与鼠标

电脑配件

部件、电池和升级

笔记本电脑包和便携包

Wi-Fi 和网络产品

硬盘、SSD 和存储

网络摄像头和视频会议

瘦客户端

工作站

返回

工作站

查看全部工作站

Precision 移动工作站

Precision 固定工作站

服务

返回

服务

查看所有服务

咨询服务

部署服务

支持服务

派驻服务

培训与认证

服务技术

Premier:电子采购与集成

支持

返回

支持

支持主页

支持库

支持服务和合同

驱动程序和下载

手册和文档

诊断和工具

自行维修和部件

服务请求和分派状态

订单支持

联系技术支持

社区

特惠

返回

特惠

查看全部特惠

笔记本特惠

台式机特惠

游戏电脑特惠

办公特惠

返回

办公特惠

办公笔记本特惠

办公台式机特惠

服务器特惠

显示器特惠

电脑配件特惠

会员采购

返回

会员采购

戴尔会员采购项目

小企业解决方案

Dell Outlet(经过认证的翻新)

领券中心

如何选择笔记本电脑

联系我们

CN/ZH

返回

Dell Blog

Home

Company Updates

Company Updates

Company Updates Overview

Corporate Updates

Channel Partners

Executive Voices

Sustainability

Workplace and Culture

Products

Products

Products Overview

Converged and Hyperconverged Infrastructure

Data Protection

Laptops, Desktops and Monitors

Networking

OEM

Servers

Software

Storage

Technology Solutions

Technology Solutions

Technology Solutions Overview

5G

Artificial Intelligence

as-a-Service

Cloud

Data Analytics

Edge

High Performance Computing

Security and Privacy

Service and Support

Service and Support

Service and Support Overview

Services

Support

Events

NVIDIA GTC 2024: What to Expect from Dell TechnologiesGet a sneak peek at our sessions and events at NVIDIA GTC 2024 and how we’re helping shape what’s next in AI and accelerated computing. By Varun Chhabra   |  

March 5, 2024March 4, 2024

Topics in this article EventsGenerative AIPowerScale

As AI continues to transform every aspect of business, organizations are called to put it to work to increase productivity, deliver the right experiences for users and customers, and accelerate innovation. That’s why we’re excited to help organizations on their AI journeys with the broadest AI solutions portfolio from desktop to data center to cloud.¹ And there’s no better place to do it than NVIDIA GTC 2024—bringing together industry luminaries, developers, researchers and business strategists helping shape what’s next in AI and accelerated computing.

Plan on seeing a lot of Dell Technologies in and around GTC. As Diamond Elite sponsors of the event, we’ll be showing up everywhere—from our booth in the AI Center of Excellence, to on-site lounges, to our breakout sessions, and at our Wednesday evening reception at San Pedro Social.

Here’s a little more on what to expect from us. We recommend bookmarking this post so you have it handy as a reference during the show.

Immerse Yourself in AI at the Dell Technologies Booth

Our Dell Technologies booth within the AI Center of Excellence is the perfect place to learn about what’s possible when you bring AI to your data. We’ll be on hand to show you our broad portfolio of AI products and solutions that support you from core to cloud to edge—and help you no matter where you are in your AI journey.

There’s no better way to get to know our technologies than to try them out yourself, which is why our booth will offer a number of hands-on demos. Use generative AI (GenAI) for image creation at the Invoke + NVIDIA AI Workbench. Or learn how you can get up and running quickly with a retrieval augmented generation (RAG) proof-of-concept and put your data to work fast. Or configure infrastructure via a VR-connected digital twin experience. There will even be digital artists on hand to show you interactive GenAI drawing demos. All of this can inspire you with AI possibilities within your own organization.

Deep Dive on Our Technologies in Our Breakout Sessions

Once you’ve had a chance to explore what’s on tap from Dell Technologies in our booth, go a bit deeper with our six breakout sessions. We’ll be offering four on-site and two through the virtual experience, which you can learn more about below. 

Unlocking the Potential of Generative AI with Your Data

The AI landscape has witnessed a remarkable growth, fueled by the rise of generative AI and the need for organizations to tailor solutions to their specific use cases. We’ll explore why bringing AI to your data results in better outcomes, how techniques such as model augmentation can allow you to leverage smaller models and how our joint initiative with NVIDIA can reduce the friction of building or repurposing generative AI models in your environments. Session ID: S62977. Attend online.

Accelerate Generative AI Innovation with Dell PowerEdge

Join us for an overview of Generative AI solutions with NVIDIA and get an inside look at what’s next for the Dell PowerEdge XE product family. We’ll explore how Dell’s broad portfolio of products and services empower you to build GenAI solutions tailored for your business, including a demo and resources to deploy a RAG chatbot customized with your own business data. Session ID: S63026. Attend online.

Turbocharging DGX SuperPOD with Dell Data Lakehouse and PowerScale

Organizations want to embrace AI but find they struggle with the complexity of finding, accessing, prepping and serving all the data that makes AI initiatives successful. In this session, you’ll learn how to solve these challenges through an open, modern data lakehouse and a trusted NVIDIA DGX SuperPOD built on Ethernet technology and Dell PowerScale AI-Ready data platform. Session ID: S62991​. Wednesday, Mar 20 | 11:00 AM – 11:25 AM PDT

Redefining Limits: Empower Generative AI Using Cutting-edge Workstations

Interest in AI and machine learning workloads is growing, but along with it comes questions about the complexity of implementation. In particular, generative AI, with its ability to create original content, has shown great promise, but realizing its full potential requires significant computational power. Many organizations have wondered whether workstations have the muscle to handle the demands of generative AI workloads. This session explores the possibilities when you pair Dell Precision workstations with NVIDIA RTX GPUs. Session ID: S62995​. Tuesday, Mar 19 | 2:00 PM – 2:25 PM PDT

Performance Characterization for Different Model Customization Methods on Popular Foundational Models

To develop AI models tailored to their specific use cases, organizations need customized large language models (LLMs) infused with their domain knowledge. To help you get started, this session will delve into various techniques for customizing LLMs, including prompt engineering, prompt learning, fine-tuning and low-ranking adaptation. We’ll talk through which model customization techniques and foundational models are best suited for various enterprise use cases, then investigate the performance characteristics of these model customization methods. Session ID: S62033. Wednesday, Mar 20 | 9:00 AM – 9:50 AM PDT

Getting the Storage Right for AI Applications

Generative AI is a complex landscape when it comes to storage, requiring solutions that are high capacity, high performance, high bandwidth and low latency to support data ingestion, preparation, training and inference. Furthermore, storage platforms need to handle different file systems, protocols and networks to support multimodal models. In this session, we’ll cover essential topics like hybrid, multicloud, data migration, security and capacity scaling. Our panel of experts from across the NVIDIA storage partner ecosystem will offer tips and strategies that can help you avoid potential issues to get the most from your storage for different AI applications. Session ID: S62476. Wednesday, Mar 20 | 2:00 PM – 2:50 PM PDT

Find Out More at NVIDIA GTC 2024

NVIDIA GTC will be happening in San Jose, California, from March 18–21. We’ll be on-hand to chat peer-to-peer, answer questions and get to know you. Can’t attend in person? You can also sign up online for the virtual event.

If you’re joining us at the San Jose Convention Center, stop by the Dell Technologies booth at #1216 within the AI Center of Excellence. We’d love to say hello.

1 Based on Dell analysis, August 2023. Dell Technologies offers hardware solutions engineered to support AI workloads from Workstations PCs (mobile and fixed) to Servers for High-performance Computing, Data Storage, Cloud Native Software-Defined Infrastructure, Networking Switches, Data Protection, HCI and Services.

About the Author: Varun Chhabra

Varun Chhabra is Senior Vice President of Infrastructure (ISG) and Telecom Marketing at Dell. He has been with Dell since 2015.

Prior to joining Dell, Varun worked at Microsoft, where he held a variety of product marketing roles supporting the Intelligent Cloud (Microsoft Azure and Windows Server) business, as well as at Oracle, where he was a software developer. Varun has an MBA from the University of Michigan, and a BS in Electrical Engineering and Computer Science from the University of California, Berkeley.

You may also like

Precision

Extend the Power of AI-Ready Precision Workstations with NVIDIA

Feb 23, 2024

  |   Charlie Walker

Zero Trust

Dell Technologies Builds Ecosystem to Speed Zero Trust Adoption

Apr 19, 2023

  |   Herb Kelsey

Events

Must-See Edge Sessions at Dell Technologies World 2023

Apr 24, 2023

  |   Alison Biers

Topics in this article EventsGenerative AIPowerScale

You may also like

Big Data

Jumpstart Your AI Journey with NVIDIA and Dell Technologies

Sep 6, 2023Jay Limbasiya

PowerEdge

Harness Hybrid Quantum Computing with Dell Technologies and NVIDIA

Nov 13, 2023Ken Durazzo

Digital Transformation

Dell and NVIDIA: Bringing Generative AI to the Enterprise

May 23, 2023Travis Vigil

PowerEdge

Accelerating the GenAI Revolution with Dell and NVIDIA AI

Aug 10, 2023Robert McNeal

VMware

Dell, VMware and NVIDIA Bring AI to Your Data

Aug 22, 2023Robert McNeal

Innovation

Dell and NVIDIA On Bringing AI to Your Data

Dec 6, 2023Travis Vigil

Retail

Empowering Retail Evolution in 2024

Jan 11, 2024Willie Reed

Customer

Data Privacy Week 2024

Jan 24, 2024John Scimone

CN/ZH

客户

客户

我的帐户

订单状态

我的产品

支持

支持

支持主页

联系技术支持

联系我们

联系我们

社区

联系我们

CN/ZH

我们的产品和服务

我们的产品和服务

APEX

产品

解决方案

服务

特惠

我们的公司

我们的公司

我们的定位

工作机会

Dell Technologies 资本

投资者

新闻编辑室

视点

回收

ESG 及影响

客户案例

我们的合作伙伴

我们的合作伙伴

查找合作伙伴

戴尔授权店面

OEM 解决方案

合作伙伴计划

资源

资源

博客

活动

邮件订阅

隐私中心

资源库

安全和信任中心

试用版软件下载

Dell Technologies

Premier

版权 1999-2024 戴尔公司 (Dell Inc.) 仅适用于中国客户的内容设计 版权所有

条款和条件

隐私政策

法律法规

无障碍

闽ICP备05032923号-1

闽公网安备35020602001252号

营业执照 913502006120204831

Linux下详解gcc编译过程(含代码示例)&& gcc使用教程_gcc编译命令-CSDN博客

>

Linux下详解gcc编译过程(含代码示例)&& gcc使用教程_gcc编译命令-CSDN博客

Linux下详解gcc编译过程(含代码示例)&& gcc使用教程

最新推荐文章于 2024-03-06 16:32:56 发布

狱典司

最新推荐文章于 2024-03-06 16:32:56 发布

阅读量1.1w

收藏

55

点赞数

15

分类专栏:

Linux

Unix环境高级编程

文章标签:

linux

c++

c语言

unix

gcc/gdb编译调试

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_47826078/article/details/120474122

版权

Linux

同时被 2 个专栏收录

31 篇文章

2 订阅

订阅专栏

Unix环境高级编程

11 篇文章

1 订阅

订阅专栏

文章目录

准备: test.c1. 编译过程1.1 预处理(Pre-Processing)1.2 汇编(Assembling)1.3 编译(Compiling)* gcc -c1.4 链接(Linking)

2. 简化过程 —— gcc3. gcc常用选项总结

准备: test.c

在正式开始之前,若是想要通过一个代码(.c文件)来熟悉gcc的编译流程,可以在你的测试目录下使用如下代码:

// 文件名:test.c

1 #include

2 #include

3

4 int main(int argc, char *argv[])

5 {

6 int arg;

7 for(arg = 0; arg < argc; arg++){

8 if(argv[arg][0] == ‘-’)

9 printf("option:%s\n",argv[arg]+1);

10 else

11 printf("argument %d:%s\n",arg,argv[arg]);

12 }

13 exit(0);

14 }

1. 编译过程

在使用gcc编译程序时,编译过程可以简要划分为4个阶段:

预处理汇编编译链接

1.1 预处理(Pre-Processing)

这个阶段主要处理源文件中的#indef、#include和#define预处理命令; 这里主要是把一些include的头文件和一些宏定义,放到源文件中。

输入的是C语言的源文件输出 :生成一个中间/预加载文件 *.i(以 .i 结尾的文件)这个阶段对应的gcc命令如下: #gcc –E(预处理) test.c(源文件) -o test.i(将结果生成的文件)说明:它通过对源文件test.c使用E选项来生成中间文件test.i

1.2 汇编(Assembling)

输入:中间文件*.i 输出:编译后生成汇编编语言文件*.s 这个阶段对应的gcc命令如下: #gcc -S(汇编) test.i -o test.s(汇编编语言文件) 说明:它通过对源文件test.c使用S选项来生成汇编文件test.s

1.3 编译(Compiling)

输入文件:汇编文件*.s输出文件:二进制机器代码*.o这个阶段对应的gcc命令如下: #gcc -c(编译) test.s -o test.o

* gcc -c

在功能上,预处理、编译、汇编是3个不同的阶段 但gcc在实际操作时可以把这3个步骤合并为一个步骤来执行,即使用 -c选项:

输入文件:源码*.c文件输出文件:二进制机器代码*.o这个阶段对应的gcc命令如下: # gcc –c test.c -o test.o // -o指定了output_filename 或 : #gcc -c test.c //省略-o output_filename //默认输出为test.o //与源文件同名,后缀为.o

1.4 链接(Linking)

输入文件:二进制机器码*.o文件输出文件:与其它的机器代码和库文件汇集成一个可执行的二进制代码文件(无后缀)这个阶段对应的gcc命令如下: #gcc (没有选项符号) test.o example.o -o test

可用选项: -L 指定库路径 -l (小写的L)指定库名称 -I (大写的i)指定头文件所在路径 -i 指定头文件名称

选项详解:

选项用法解释-l(大写的i)-Idirname(没有间隔)将名为dirname的目录加入到程序头文件目录列表中,它是在预处理阶段使用的选项,I是指Include-L-Ldirname将名为dirname的目录加入到程序的库文件搜索目录列表中,它是在链接过程中使用的参数, L是指Link-l (小写的L)-lname指示编译器,在链接时,装载名为libname.a的函数库,该函数库位于系统预定义的目录或者由-L选项指定的目录下

· 例:-lm 表示链接名为libm.a的数学函数库

2. 简化过程 —— gcc

上述过程可以简化为: #gcc test.c (源文件) -o test(可执行文件) 注意:与链接的语句差别主要在指令中输入文件的后缀

注: 1.库是头文件的实现! 2.在编译过程中可以被装载/拷贝的库为静态库(.a后缀) · 更多关于静态库/动态库的知识请参考这篇博客:详解Linux下静态库/动态库(含代码示例)

3. gcc常用选项总结

常用选项:

选项功能-c只编译,不链接成可执行文件,编译器只是由输入的.c等为后缀的源代码文件生成.o为后缀的标文件,通常用于编译不包含主程序的子程序文件-ooutput_filename 确定输出文件的名称为output_filename,同时这个名称不能和源文件名。如果不给出这个选项,gcc就默认将输出的可执行文件命名为a.out-g产生调试器gdb所必须的符号信息,要对源代码进行调试,就必须在编译程序时加入这个选项-O对程序进行优化编译、链接,采用这个选项,整个源代码会在编译、链接过程中进行优化处理,这样产生的可执行文件的执行效率较高,但是,编译、链接的速度就相应地要慢一些。-O2比-O更好的优化编译、链接-Wall输出所有警告信息-w关闭所有警告信息-Idirname(没有间隔,大写 i )将名为dirname的目录加入到程序头文件目录列表中,它是在预处理阶段使用的选项,I是指Include-Ldirname将名为dirname的目录加入到程序的库文件搜索目录列表中,它是在链接过程中使用的参数。· L是指Link-lname(小写的L)指示编译器,在链接时,装载名为libname.a的函数库,该函数库位于系统预定义的目录或者由-L选项指定的目录下

gcc使用例子: (1) gcc -Wall src.c –o dest -lpthread /*输出所有警告信息地编译src.c生成dest可执行文件 /*并在链接时装入libpthread.a的函数库 ————————————————————————— (2)gcc -Wall -o sniffex sniffex.c -lpcap /*输出所有警告信息地编译sniffex.c生成sniffex可执行文件 /*并在链接时装入libpcap.a的函数库

优惠劵

狱典司

关注

关注

15

点赞

55

收藏

觉得还不错?

一键收藏

打赏

知道了

1

评论

Linux下详解gcc编译过程(含代码示例)&& gcc使用教程

文章目录准备: test.c1. 编译过程1.1 预处理(Pre-Processing)1.2 汇编(Assembling)1.3 编译(Compiling)* gcc -c1.4 链接(Linking)2. 简化过程 —— gcc3. gcc常用选项总结准备: test.c在正式开始之前,若是想要通过一个代码(.c文件)来熟悉gcc的编译流程,可以在你的测试目录下使用如下代码:// 文件名:test.c 1 #include <stdio.h> 2 #includ

复制链接

扫一扫

专栏目录

详解linux下make命令的使用方法

01-10

本文我们将用一些实例来讨论 make 命令背后的工作机制。 Make 如何工作的 ...一旦主依赖编译之后,然后就编译主目标(这是通过 make 命令传入的)。 现在,假设你对某个源文件进行了修改,你再次执

GCC工具链(交叉)编译过程和相关命令详解

12-04

本文为原创介绍GCC 编译C语言过程以及相关工具、编译选项的详解,一篇搞定,不用走弯路网络搜索

1 条评论

您还未登录,请先

登录

后发表或查看评论

gcc 编译器常用的命令行参数一览

weixin_33698823的博客

09-06

290

这些常用的 gcc/g++ 命令行参数,你都知道么?

1. gcc -E source_file.c

-E,只执行到预编译。直接输出预编译结果。

2. gcc -S source_file.c

-S,只执行到源代码到汇编代码的转换,输出汇编代码。

3. gcc -c source_file.c

-c,只执行到编译,输出目标文件。

4. gcc (-E/S/c/) s...

gcc编译指令详解

wz3118103的专栏

05-16

920

一 GCC编译流程

    1.预处理

Linux gcc.pdf

07-31

Linux系统C/C++ GCC编译器学习gcc.pdf详解GCC编译原理,有助于理解linxu编译原理

GCC编译器的常用命令及使用

weixin_47314449的博客

10-16

5207

一、用gcc生成静态库和动态库

在创建库函数之前,先来准备举例用的源程序,并将函数库的源程序编译成.o文件。

(1)编辑生成子程序hello.h、hello.c、main.c

先创建一个目录,用来保存用到的文件

使用GCC编译程序常用命令

七妹的博客

11-12

1万+

一、编译器驱动程序

首先梳理一下源文件到可执行文件的整个过程,下面是两个源文件的组成main.c和sum.c

// main.c

int sum(int *a, int n);

int array[2] = { 1, 2 };

int main() {

int val = sum(array, 2);

return val;

}

// sum.c

int sum(int *a, int n) {

int i, s = 0;

for (i = 0; i < n; i++) {

s += a

GCC编译常用命令

m0_74379435的博客

05-11

2604

此文章是记录自己首次使用GCC编译时遇到的问题,并尽自己的努力去解决和总结的过程。小白萌新,大佬勿喷。

gcc 命令详解及最佳实践

热门推荐

人人都懂物联网

06-12

2万+

介绍

GCC(英文全拼:GNU Compiler Collection)是 GNU 工具链的主要组成部分,是一套以 GPL 和 LGPL 许可证发布的程序语言编译器自由软件,由 Richard Stallman 于 1985 年开始开发。

GCC 原名为 GNU C语言编译器,因为它原本只能处理 C 语言,但如今的 GCC 不仅可以编译 C、C++ 和 Objective-C,还可以通过不同的前端模块支持各种语言,包括 Java、Fortran、Ada、Pascal、Go 和 D 语言等等。

编译过程

GC

Linux GCC常用命令以及GCC编译器

qq_56355200的博客

09-23

2001

该文主要介绍了GCC常用的命令以及GCC的编译器的使用。

gcc编译命令

Jackie_Ryan的专栏

03-20

3270

一、单文件编译

1、无选项自动编译链接

命令:gcc main.cpp

作用:将main.cpp预处理、汇编、编译并链接生成可执行文件。默认输出为a.out。

2、-o(小写)

命令:gcc main.cpp -o demo

作用:将main.cpp预处理、汇编、编译并链接生成可执行文件demo。-o选项用来指定输出文件的文件名。

3、-E

命令:gcc -E main.cpp -...

Linux中使用VS Code编译调试C++项目详解

12-25

前言

关于VS Code在Linux下的安装这里就不提了,不管是CentOS还是Ubuntu,如果不懂且搜问题足够的情况下,你会解决的。

一、前置知识——gcc/g++的编译链接过程

在Windows下,如果你用Visual Studio进行开发,C/C++的编译器一般采用微软提供的MSBuild;在Linux下C/C++的编译器大多采用gcc/g++。既然要在Linux下进行C++开发,很有必要了解一下g++编译器的一些基本知识。

假设我现在有一个最简单的C++文件:

#include

using namespace std;

int main() {

cou

gcc编译过程概述.pdf

03-04

gcc编译过程概述.pdfgcc编译过程概述.pdf

Linux下nginx编译安装教程和编译参数详解

01-09

一、必要软件准备1.安装pcre为了支持rewrite功能,我们需要安装pcre 代码如下:# ...下载nginx使用,如果已经安装,跳过这一步 代码如下:# yum install wget 二、安装nginx1.下载 代码如下:wget http://nginx.org/downloa

linux下编译安装kangle web server教程详解

01-09

首先下载kangle kangle web server源代码。 kangle linux版下载: kangle源代码(tar.gz包,非windows版本安装) 请先确保你的系统上有g++,libz开发包,libpcre开发包,libiconv开发包。如你的系统为centos/rhel则运行...

Linux CentOS 7 安装字体库 & 中文字体

baidu_25347287的博客

03-06

887

报表中发现有中文乱码和中文字体不整齐(重叠)的情况,首先考虑的就是操作系统是否有中文字体,在CentOS 7中发现输入命令查看字体列表是提示命令无效:如上图可以看出,不仅没有中文字体,连字体库都没有,那么接下来就记录一下在Linux CentOS 7中如何安装字体库以及中文字体。

构建高性能Linux Virtual Server(LVS)集群

最新发布

hy199707的博客

03-06

1171

在当今互联网服务环境中,高并发、高可用是衡量系统性能和稳定性的关键指标。为了应对海量请求和实现系统的稳定性,负载均衡技术成为不可或缺的一环。其中,Linux Virtual Server(LVS)作为基于Linux内核的开源负载均衡解决方案,凭借其高效能与灵活配置的特点,在众多场景下得到广泛应用。接下来,我们将深入探讨如何构建一个LVS集群

Linux下mysql添加用户并授权数据库权限

beautifulmemory的博客

03-06

337

在 Linux 下,你可以使用 MySQL 的 root 用户登录到 MySQL 数据库,然后通过 SQL 命令来添加新用户并授予数据库权限。

Linux 查看硬件常用命令

久绊A的博客

03-05

425

该命令用于显示有关系统硬件的详细信息,包括主板、内存、BIOS等。该命令用于列出块设备(硬盘、SSD等)的信息,包括挂载点。该命令用于列出所有连接到PCI总线的设备信息。该命令用于列出所有连接到USB总线的设备信息。显示完整的硬件信息,需要以管理员权限运行。该命令用于显示CPU(中央处理器)信息。该命令用于列出所有SCSI设备的信息。该命令用于显示磁盘空间使用情况。该命令用于显示系统内存使用情况。

gcc 编译指令详解

08-08

gcc是一种常用的编译器,用于将源代码转换为可执行文件。它可以编译多种编程语言,例如C、C++、Objective-C等。

gcc编译指令的格式如下:gcc [选项] 源文件

以下是一些常用的gcc编译指令选项:

1. -o:指定输出文件的名称。例如,gcc -o hello hello.c将编译hello.c文件,并将输出文件命名为hello。

2. -c:生成目标文件,而不是可执行文件。这个选项常用于分开编译和链接的过程。例如,gcc -c hello.c将生成名为hello.o的目标文件。

3. -g:生成用于调试的可执行文件。这将包含调试符号,以便在调试器中进行源代码级别的调试。例如,gcc -g hello.c -o hello_debug。

4. -Wall:开启警告信息。编译器将产生关于可能的代码问题的警告。例如,gcc -Wall hello.c。

5. -I:指定头文件的搜索路径。这个选项用于告诉编译器在哪些目录中搜索头文件。例如,gcc -I/usr/include hello.c。

6. -L:指定库文件的搜索路径。类似于-I选项,这个选项用于告诉编译器在哪些目录中搜索库文件。例如,gcc -L/usr/lib hello.c -o hello -lm。

7. -D:定义宏。这个选项用于在编译过程中定义宏。例如,gcc -DDEBUG hello.c -o hello。

除了上述选项,gcc还有很多其他功能强大的选项,可以用于优化、链接库文件、处理多个源文件等。可以通过运行gcc --help命令来查看所有可用选项的详细信息。

综上所述,gcc编译指令提供了丰富的选项,可用于控制编译过程的各个方面,从而满足不同的需求。熟悉并灵活运用这些选项,对于开发人员来说是非常重要的。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

狱典司

博客等级

码龄4年

77

原创

374

点赞

1211

收藏

330

粉丝

关注

私信

热门文章

Linux下详解gcc编译过程(含代码示例)&& gcc使用教程

11278

wireshark抓包--简要分析HTTP协议

10464

保姆级swap分区详解!手把手带你创建swap分区(两种方式,建议收藏)涉及fdisk、gdisk、df、parted、partprobe、mkswap、swapon、free、dd、od等命令

9373

Linux 查看 && 修改端口范围限制

8533

计算机网络实验 ——wireshark抓包简要分析TCP、UDP协议

8320

分类专栏

C++

15篇

操作系统

23篇

Unix环境高级编程

11篇

Linux

31篇

Unix网络编程

24篇

计算机网络学习笔记

7篇

网络服务

20篇

前端

3篇

数据库

3篇

王道考研_学习笔记_操作系统篇

2篇

最新评论

如何用C/C++写一个Linux文件系统模拟器

满栀675:

就是在login succed 那里就停止了

如何用C/C++写一个Linux文件系统模拟器

满栀675:

这个我也写了啦,就是记事本命名的

如何用C/C++写一个Linux文件系统模拟器

狱典司:

account.txt是不是没写

如何用C/C++写一个Linux文件系统模拟器

满栀675:

你好,我想问一下为什么我建了home文件夹还是没办法输入密码登录呀

Linux下详解gcc编译过程(含代码示例)&& gcc使用教程

CCC753:

讲的很清晰 感谢

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

C/C++中各个位置的const关键字

mmap(内存映射)、sendfile() 与零拷贝技术

共享内存原理与使用

2023年10篇

2022年32篇

2021年37篇

目录

目录

分类专栏

C++

15篇

操作系统

23篇

Unix环境高级编程

11篇

Linux

31篇

Unix网络编程

24篇

计算机网络学习笔记

7篇

网络服务

20篇

前端

3篇

数据库

3篇

王道考研_学习笔记_操作系统篇

2篇

目录

评论 1

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

打赏作者

狱典司

你的鼓励将是我创作的最大动力

¥1

¥2

¥4

¥6

¥10

¥20

扫码支付:¥1

获取中

扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

如何使用GNU编译器(GCC)编译C程序

如何使用GNU编译器(GCC)编译C程序

Skip to Content探索

关于我们

互助客栈

随机阅读

指南分类

登录

登录

社交帐号登录在无痕和私人浏览器中无法使用。请用您的用户名或电子邮箱登录以继续。

Facebook

Google

wikiHow账号

还没有账号? 创建帐户

随机首页随机浏览文章关于wikiHow登陆/注册政策分类计算机与电子产品软件如何使用GNU编译器(GCC)编译C程序

下载PDF文件

共同创作者是

wikiHow员工

下载PDF文件

X

这篇文章由我们训练有素的编辑和研究团队共同创作,他们对文章的准确性和全面性进行了验证。wikiHow的内容管理团队会严密监督编辑人员的工作,确保每篇文章都符合我们的高质量标准要求。

这篇文章已经被读过4,692次。

在本文中:

使用Unix版GCC

使用Windows版MinGW

相关文章

参考

本指南介绍如何使用Linux版GNU编译器(GCC)和Windows版Minimalist GNU for Windows(MinGW)从源代码编译C程序。

步骤

方法 1

方法 1 的 2:

使用Unix版GCC

下载PDF文件

{"smallUrl":"https:\/\/www.wikihow.com\/images_en\/thumb\/7\/7f\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-1-Version-2.jpg\/v4-460px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-1-Version-2.jpg","bigUrl":"https:\/\/www.wikihow.com\/images\/thumb\/7\/7f\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-1-Version-2.jpg\/v4-728px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-1-Version-2.jpg","smallWidth":460,"smallHeight":345,"bigWidth":728,"bigHeight":546,"licensing":"

<\/div>"}

1

在Unix系统上打开终端窗口。

{"smallUrl":"https:\/\/www.wikihow.com\/images_en\/thumb\/c\/cc\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-2-Version-2.jpg\/v4-460px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-2-Version-2.jpg","bigUrl":"https:\/\/www.wikihow.com\/images\/thumb\/c\/cc\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-2-Version-2.jpg\/v4-728px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-2-Version-2.jpg","smallWidth":460,"smallHeight":345,"bigWidth":728,"bigHeight":546,"licensing":"

<\/div>"}

2

输入gcc --version并按↵ Enter。随后会返回C编译器的版本号。如果找不到命令,可能尚未安装GCC。[1]

X

研究来源

如果尚未安装,在Linux发行版的相关文挡中查找如何获取正确的安装包。

如果正在编译C++程序,改用“g++“。

{"smallUrl":"https:\/\/www.wikihow.com\/images_en\/thumb\/e\/e0\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-3-Version-2.jpg\/v4-460px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-3-Version-2.jpg","bigUrl":"https:\/\/www.wikihow.com\/images\/thumb\/e\/e0\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-3-Version-2.jpg\/v4-728px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-3-Version-2.jpg","smallWidth":460,"smallHeight":345,"bigWidth":728,"bigHeight":546,"licensing":"

<\/div>"}

3

导航至源代码的保存位置。

假设源代码文件“main.c”的目录是/usr/wikiHow/source,输入cd /usr/wikiHow/source。

{"smallUrl":"https:\/\/www.wikihow.com\/images_en\/thumb\/b\/bb\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-4-Version-2.jpg\/v4-460px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-4-Version-2.jpg","bigUrl":"https:\/\/www.wikihow.com\/images\/thumb\/b\/bb\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-4-Version-2.jpg\/v4-728px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-4-Version-2.jpg","smallWidth":460,"smallHeight":345,"bigWidth":728,"bigHeight":546,"licensing":"

<\/div>"}

4

输入gcc main.c –o HelloWorld。将“main.c”和“HelloWorld”分别替换为源代码文件的名称和最终程序的名称,随后将开始编译。

如果看到错误并想了解更多信息,输入gcc -Wall -o errorlog file1.c。随后输入cat errorlog,在当前目录中查看“errorlog”文件。

要将多个源代码文件编译成一个程序,输入gcc -o outputfile file1.c file2.c file3.c。

要同时将多个源代码文件编译成多个程序,输入gcc -c file1.c file2.c file3.c。

{"smallUrl":"https:\/\/www.wikihow.com\/images_en\/thumb\/9\/94\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-5-Version-2.jpg\/v4-460px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-5-Version-2.jpg","bigUrl":"https:\/\/www.wikihow.com\/images\/thumb\/9\/94\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-5-Version-2.jpg\/v4-728px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-5-Version-2.jpg","smallWidth":460,"smallHeight":345,"bigWidth":728,"bigHeight":546,"licensing":"

<\/div>"}

5

运行刚编译的程序。输入&# 46;/HelloWorld,将“HelloWorld”替换为程序的名称。

广告

方法 2

方法 2 的 2:

使用Windows版MinGW

下载PDF文件

{"smallUrl":"https:\/\/www.wikihow.com\/images_en\/thumb\/b\/b9\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-6-Version-2.jpg\/v4-460px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-6-Version-2.jpg","bigUrl":"https:\/\/www.wikihow.com\/images\/thumb\/b\/b9\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-6-Version-2.jpg\/v4-728px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-6-Version-2.jpg","smallWidth":460,"smallHeight":345,"bigWidth":728,"bigHeight":546,"licensing":"

<\/div>"}

1

下载Minimalist GNU for Windows (MinGW)。它是适用于Windows的简易安装版GCC。可以从https://sourceforge.net/projects/mingw/下载安装程序。[2]

X

研究来源

{"smallUrl":"https:\/\/www.wikihow.com\/images_en\/thumb\/0\/03\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-7-Version-2.jpg\/v4-460px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-7-Version-2.jpg","bigUrl":"https:\/\/www.wikihow.com\/images\/thumb\/0\/03\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-7-Version-2.jpg\/v4-728px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-7-Version-2.jpg","smallWidth":460,"smallHeight":345,"bigWidth":728,"bigHeight":546,"licensing":"

<\/div>"}

2

运行MinGW安装程序。

如果没有自动打开文件,在下载文件夹中双击它,然后单击“安装”。

{"smallUrl":"https:\/\/www.wikihow.com\/images_en\/thumb\/3\/39\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-8-Version-2.jpg\/v4-460px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-8-Version-2.jpg","bigUrl":"https:\/\/www.wikihow.com\/images\/thumb\/3\/39\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-8-Version-2.jpg\/v4-728px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-8-Version-2.jpg","smallWidth":460,"smallHeight":345,"bigWidth":728,"bigHeight":546,"licensing":"

<\/div>"}

3

选择安装首选项,然后单击继续。

MinGW建议使用默认安装文件夹(C:\MinGW)。如果一定要更改文件夹,不要使用名称中带空格的文件夹,比如“Program Files”。[3]

X

研究来源

{"smallUrl":"https:\/\/www.wikihow.com\/images_en\/thumb\/3\/3c\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-9-Version-2.jpg\/v4-460px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-9-Version-2.jpg","bigUrl":"https:\/\/www.wikihow.com\/images\/thumb\/3\/3c\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-9-Version-2.jpg\/v4-728px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-9-Version-2.jpg","smallWidth":460,"smallHeight":345,"bigWidth":728,"bigHeight":546,"licensing":"

<\/div>"}

4

选择要安装的编译器。

至少在左侧面板中选择基本设置,然后在右侧主面板中勾选列出的编译器。

资深用户可选择所有程序包,然后选择其他编译器。

{"smallUrl":"https:\/\/www.wikihow.com\/images_en\/thumb\/2\/23\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-10-Version-2.jpg\/v4-460px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-10-Version-2.jpg","bigUrl":"https:\/\/www.wikihow.com\/images\/thumb\/2\/23\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-10-Version-2.jpg\/v4-728px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-10-Version-2.jpg","smallWidth":460,"smallHeight":345,"bigWidth":728,"bigHeight":546,"licensing":"

<\/div>"}

5

单击安装菜单。它位于MinGW的左上角。

{"smallUrl":"https:\/\/www.wikihow.com\/images_en\/thumb\/b\/b3\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-11-Version-2.jpg\/v4-460px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-11-Version-2.jpg","bigUrl":"https:\/\/www.wikihow.com\/images\/thumb\/b\/b3\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-11-Version-2.jpg\/v4-728px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-11-Version-2.jpg","smallWidth":460,"smallHeight":345,"bigWidth":728,"bigHeight":546,"licensing":"

<\/div>"}

6

单击应用更改。

{"smallUrl":"https:\/\/www.wikihow.com\/images_en\/thumb\/b\/bd\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-12-Version-2.jpg\/v4-460px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-12-Version-2.jpg","bigUrl":"https:\/\/www.wikihow.com\/images\/thumb\/b\/bd\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-12-Version-2.jpg\/v4-728px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-12-Version-2.jpg","smallWidth":460,"smallHeight":345,"bigWidth":728,"bigHeight":546,"licensing":"

<\/div>"}

7

单击应用。随后会下载并安装编译器。

{"smallUrl":"https:\/\/www.wikihow.com\/images_en\/thumb\/b\/b4\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-13-Version-2.jpg\/v4-460px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-13-Version-2.jpg","bigUrl":"https:\/\/www.wikihow.com\/images\/thumb\/b\/b4\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-13-Version-2.jpg\/v4-728px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-13-Version-2.jpg","smallWidth":460,"smallHeight":345,"bigWidth":728,"bigHeight":546,"licensing":"

<\/div>"}

8

将MinGW的路径添加到系统环境变量中。方法如下:

按⊞ Win+S启动搜索,然后输入环境。

在搜索结果中单击编辑系统环境变量。

单击环境变量。

单击“用户变量”窗格下方的编辑。

滚动至“变量值”方框的末尾。

在最后一个字母后输入;C:\MinGW\bin。如果将MinGW安装在其他目录,输入;C:\目录路径\bin。

单击两次确定。再次单击确定关闭窗口。

{"smallUrl":"https:\/\/www.wikihow.com\/images_en\/thumb\/3\/34\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-14-Version-2.jpg\/v4-460px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-14-Version-2.jpg","bigUrl":"https:\/\/www.wikihow.com\/images\/thumb\/3\/34\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-14-Version-2.jpg\/v4-728px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-14-Version-2.jpg","smallWidth":460,"smallHeight":345,"bigWidth":728,"bigHeight":546,"licensing":"

<\/div>"}

9

以管理员身份打开命令提示符窗口。方法如下:

按⊞ Win+S,然后输入cmd。

在搜索结果中右键单击命令提示符,然后选择以管理员身份运行。

单击确定应用更改。

{"smallUrl":"https:\/\/www.wikihow.com\/images_en\/thumb\/e\/ee\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-15-Version-2.jpg\/v4-460px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-15-Version-2.jpg","bigUrl":"https:\/\/www.wikihow.com\/images\/thumb\/e\/ee\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-15-Version-2.jpg\/v4-728px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-15-Version-2.jpg","smallWidth":460,"smallHeight":345,"bigWidth":728,"bigHeight":546,"licensing":"

<\/div>"}

10

导航至源代码的保存位置。

假设源代码文件helloworld.c的目录是C:\Source\Programs,输入cd C:\Source\Programs。

{"smallUrl":"https:\/\/www.wikihow.com\/images_en\/thumb\/a\/ae\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-16-Version-2.jpg\/v4-460px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-16-Version-2.jpg","bigUrl":"https:\/\/www.wikihow.com\/images\/thumb\/a\/ae\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-16-Version-2.jpg\/v4-728px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-16-Version-2.jpg","smallWidth":460,"smallHeight":345,"bigWidth":728,"bigHeight":546,"licensing":"

<\/div>"}

11

输入gcc helloworld.c –o helloworld.exe。将两个“helloworld”分别替换为源代码文件的名称和应用程序的名称。如果程序编译成功,会返回命令提示符窗口,并且不会出现错误消息。[4]

X

研究来源

必须先更正代码错误,然后才能编译程序。

{"smallUrl":"https:\/\/www.wikihow.com\/images_en\/thumb\/7\/7b\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-17.jpg\/v4-460px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-17.jpg","bigUrl":"https:\/\/www.wikihow.com\/images\/thumb\/7\/7b\/Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-17.jpg\/v4-728px-Compile-a-C-Program-Using-the-GNU-Compiler-%28GCC%29-Step-17.jpg","smallWidth":460,"smallHeight":345,"bigWidth":728,"bigHeight":546,"licensing":"

<\/div>"}

12

输入程序的名称以运行程序。如果程序的名称是helloworld.exe,输入该名称就能启动程序。

广告

小提示

编译代码时加上-g选项会生成调试信息,这样更便于你使用对应的调试程序GDB进行调试。

可以创建Makefiles来提高大型程序的编译效率。

如果你使用优化选项,就需要权衡利弊,比如优化速度就会造成文件变大,甚至精确度下降,反之亦然。

编译C++程序时,G++的用法与GCC相同。注意C++文件的扩展名不是.c,而是.cpp。

广告

你需要准备

运行Linux或Windows的电脑

有关GNU/Linux以及安装应用程序的基础知识

程序代码

文本编辑器,比如Emacs或vi

你可能还喜欢

如何在PC或Mac上登录Telegram网页版

如何减小Excel文件的大小

如何打开DLL文件

如何在Adobe Illustrator中创建表格

如何避免Teams进入空闲状态

如何向Illustrator中添加字体

如何将YouTube视频转换成MP3

如何将新字体添加到InDesign中

如何在Photoshop中添加字体

如何在电脑上播放MP4视频

如何在“画图”中将图片背景变为透明

如何用PS去掉图片中的文字

如何在Photoshop中弯曲文字

如何在Adobe Illustrator中更改背景颜色

广告

参考

↑ http://pages.cs.wisc.edu/~beechung/ref/gcc-intro.html

↑ http://www.mingw.org/wiki/Getting_Started

↑ http://www.mingw.org/wiki/Getting_Started

↑ http://www.mingw.org/wiki/mingw_for_first_time_users_howto

关于本wikiHow

共同创作者是 :

wikiHow员工

wikiHow专职作家

这篇文章由我们训练有素的编辑和研究团队共同创作,他们对文章的准确性和全面性进行了验证。wikiHow的内容管理团队会严密监督编辑人员的工作,确保每篇文章都符合我们的高质量标准要求。 这篇文章已经被读过4,692次。

分类: 软件

其他语言

English:Compile a C Program Using the GNU Compiler (GCC)

Español:compilar un programa en C usando el compilador GNU (GCC)

Italiano:Compilare un Programma C Utilizzando il Compilatore GNU GCC

Português:Compilar um Programa Usando o Compilador GNU (GCC)

Русский:скомпилировать программу C, используя компилятор GNU Compiler (GCC)

Deutsch:Ein C Programm mit dem GNU Compiler (GCC) kompilieren

Bahasa Indonesia:Mengompilasi Program C dengan GNU C Compiler (GCC)

Français:compiler un programme en C avec le compilateur GNU GCC

ไทย:Compile โปรแกรมภาษา C ด้วย GNU Compiler (GCC)

Nederlands:Een C programma compileren met de GNU compiler

العربية:ترجمة برنامج بلغة سي باستخدام مترجم جي إن يو

Tiếng Việt:Biên dịch chương trình C bằng GNU (GCC)

Türkçe:C Programları GNU Compiler (GCC) ile Nasıl Derlenir

한국어:GNU 컴파일러로(GCC) C 프로그램 컴파일 하는 법

हिन्दी:जीएनयू कम्पाइलर से C प्रोग्राम कंपाइल करें (Compile a C Program Using the GNU Compiler (GCC)

日本語:GNUコンパイラコレクション(GCC)でCプログラムをコンパイルする

打印

本页面已经被访问过4,692次。

这篇文章对你有帮助吗?

不是

广告

启用cookies能优化您使用wikiHow的体验。接受我们的cookie相关条例, 继续使用wikiHow.

有关 wikiHows如何在PC或Mac上登录Telegram网页版如何减小Excel文件的大小如何打开DLL文件如何在Adobe Illustrator中创建表格

订阅wikiHow新闻通讯

每周通过邮箱接收有用的万事指南!

立即注册!

关注我们

分享TweetPin It

分类计算机与电子产品软件

首页

关于wikiHow

专家

联系我们

站点地图

使用条款(英文)

隐私政策

Do Not Sell or Share My Info

Not Selling Info

关注我们

×

不要错过!注册

wikiHow的新闻通讯

订阅!

--440

使用GCC编译C程序 - 知乎

使用GCC编译C程序 - 知乎切换模式写文章登录/注册使用GCC编译C程序岩火云前言绝大多数编译器并不是一个单一的庞大程序,它们通常由多个稍小的程序组成,这些程序由一个叫做“编译器驱动器(compiler driver)”的控制程序调用。编译器通常由以下几个部分组成:预处理器(preprocessor)语法和语义检查器(syntactic and semantic checker)代码生成器(code generator)汇编程序(assembler)优化器(optimizer)链接器(linker)链接器确认main函数为初始进入点(程序开始执行的地方),把符号引用(symbolic reference)绑定到内存地址,把所有的目标文件集中在一起,再加上库文件,从而产生可执行文件。GNU编译器套件GCC原来是"GNU C Compiler"的意思。经过不断的演变,GCC逐渐扩充、发展,目前不仅支持C语言的程序编译,还支持其他多种语言,包括C++、Ada、Objective-C、Fortran等。GCC对C11标准的支持是不完整的,尤其涉及定义在头文件threads.h中的多线程函数。这是因为,GCC的C链接库长期以来支持POSIX标准下的多线程函数。可以通过cc --version命令或gcc --version命令检查当前系统内的gcc版本,此处cc是gcc的一个软链接。使用GCC编译C程序GCC的默认行为是基于一个或多个指定的源文件生成一个可执行文件。例如下面一段简单的C程序:#include

double circleArea(double r);

int main()

{

double radius = 5.0;

double area = circleArea(radius);

printf("radius=%.1f, area=%.2f\n", radius, area);

}

double circleArea(double r)

{

const double pi = 3.1415926536;

return pi * r * r;

}使用命令gcc circle.c生成名为a.out的可执行文件(该文件名有其历史原因,是"assembler output"的意思)。 当然也可以通过-o选项指定输出的可执行文件的文件名。下面介绍如何控制编译过程的每个阶段:预处理(preprocession)、编译(compiling)、汇编(assembling)、链接(linking)。预处理将源代码交给编译器之前,由预处理器执行命令,展开源代码文件中的宏。在正常情况下,GCC不会保留预处理阶段的中间输出文件。然而,可以利用-E选项保留预处理器输出的文件。-E选项指示GCC在预处理完毕后即可停止。预处理器的输出会被导入到标准输出流,也可以利用-o选项把它导入到某个输出文件。-C选项可以组织预处理器删除源文件和头文件中的注释。$ gcc -E -C -o circle.i circle.c下面是GCC预处理阶段常用的选项:-Dname=[definition]

在处理源文件之前,先定义符号name。该选项搭配#ifdef使用,实现条件编译。

若未指定definition,该宏默认定义为1.

-Uname

“取消”name的定义,-D 和 -U 选项会依据在命令行中出现的先后顺序进行处理。

-Idirectory[:directory[...]]

除了系统标准include目录之外,指定其他目录对引用的头文件进行搜索。

-isystem directory[:directory[...]]

除了系统标准include目录之外,指定其他目录作为系统头文件搜索路径,优先级高于系统标准include目录。

-isysroot directory

搜索头文件时的系统根目录。例如,如果编译器在/usr/include目录下搜索头文件,该选项将引导系统到directory/usr/include及其子目录下搜索头文件。

对于include目录而言,通常的搜索顺序是:相对与源文件的目录(对于在#include命令中以引号包含的文件名)。采用-iquote 选项指定的目录,依照在命令行中出现的顺序进行搜索。仅针对引号包含的文件名。采用-I选项指定的目录, 依照在命令行中出现的顺序进行搜索。环境变量CPATH指定的目录。采用-isystem选项指定的目录,依照在命令行中出现的顺序进行搜索。环境变量C_INCLUDE_PATH 指定的目录。系统默认的 include 目录。编译编译器的核心任务是把C程序翻译成汇编语言。汇编语言是人类可以阅读的编程语言,也是相当接近实际机器码的语言。由此导致每种CPU架构都有不同的汇编语言。通常情况下,GCC把汇编语言输出存储到临时文件中,并且在汇编器执行完后立刻删除它们。但是可以使用-S选项,让编译程序在生成汇编语言输出之后立即停止。默认生成的汇编程序代码以.s为后缀。 $ gcc -S circle.c如果想把C语言变量的名称作为汇编语言语句中的注释,可以加上-fverbose-asm选项:$ gcc -S -fverbose-asm circle.c汇编因为每个机器架构都有自己的汇编语言,GCC调用宿主机系统的汇编器,把汇编语言翻译成可执行的二进制代码。该结果是一个对象文件(object file),它包含机器码,以执行对应源文件中所定义的函数,它同时包含一个符号表(symbol table),描述了源文件中具有外部链接的所有对象。如果调用GCC同时编译和链接一个程序,那么它的对象文件就仅仅是临时文件,在链接器执行完后就会被自动删除。然而,编译和链接工作通常分开执行。使用-c选项指示GCC不会链接该程序,但会对每个输入文件生成对象文件,其文件名后缀是.o :$ gcc -c circle.c可以使用GCC的-Wa选项把命令行选项传递给汇编器。例如,要向汇编器传递如下选项:-as=circle.asm

在单独一个文件中输出模块的符号表。

-L

在符号表中包含本地符号(不要与gcc中的-L混为一谈) 可以让GCC在调用汇编器时加上这些选项,做法是将这些选项形成一个以逗号分隔的列表,放在GCC的-Wa选项中:$ gcc -v -o circle -Wa,-as=circle.sym,-L circle.cGCC的-g选项让编译器在输出中包含调试信息,如果在指定汇编器-a选项的同时加上编译器-g选项,那么编译获得的汇编语言列表会与对应的C源代码并列在一起:$ gcc -g -o circle -Wa,-a=circle.list,-L circle.c 通过文件circle.list,就能逐行查看编译器如何把C语言的语句翻译为circle程序。链接链接器把多个二进制对象文件链接成一个单独的可执行文件。在链接过程中,它必须把参考符号用对应的对象实际位置替代,以完成程序中多个模块的外部引用。链接器会使用汇编器在符号表中提供的同样信息来完成该项工作。而且,链接器也必须将程序中所用到的所有C标准库函数加入其中。对于链接器而言,链接库不过是一个具有许多对象文件的集合,它们在一个文件中以方便处理。标准库的大部分函数通常放在文件libc.a或放在动态链接文件libc.so中。这些链接库一般位于/lib或/usr/lib,或者位于GCC默认的链接库搜索路径中。 为了说明链接操作,将circle.c修改为#include

#include

double circleArea(double r);

int main()

{

initscr();

keypad(stdscr, TRUE);

nonl();

cbreak();

double radius = 5.0;

double area = circleArea(radius);

printw("radius=%.1f, area=%.2f\n", radius, area);

printw("Press any key to exit");

refresh();

getch();

endwin();

return 0;

}

double circleArea(double r)

{

const double pi = 3.1415926536;

return pi * r * r;

}这里用到了一个控制台库。 有三种方式可以添加链接库:1) 把链接库当作一般对象文件。链接库对象名称必须被放在源代码后面$ gcc -o circle circle.c /usr/lib/x86_64-linux-gnu/libncurses.a2)链接GCC搜索路径以外的链接库。$ gcc -o circle -L/usr/lib/x86_64-linux-gnu -lncurses circle.c3)把包括所需链接库的目录添加到环境变量LIBRARYPATH中。【注】以上虽是标准做法,但是执行时报错最后可以通过-l选项链接函数库:$ gcc -o circle circle.c -lncurses输出所有中间文件使用选项-save-temps可以输出所有中间结果文件。使用-save-temps选项生成的中间文件,与对应的源文件具有相同的文件名,但文件扩展名分别为.i、.s和.o,分别表示为预处理输出、汇编语言输出和对象文件。 仅检查语法如果调用GCC时使用-fsyntax-only选项,就不会执行预处理、编译、汇编和链接。只会测试输入文件的语法是否正确。 多个输入文件将上述circle.c拆分成两个文件:circle.c#include

double circleArea(double r);

int main()

{

double radius = 5.0;

double area = circleArea(radius);

printf("radius=%.1f, area=%.2f\n", radius, area);

}circleArea.cdouble circleArea(double r)

{

const double pi = 3.1415926536;

return pi * r * r;

}可以先将其编译成对象文件,然后链接起来:动态链接和静态链接使用GCC的-shared选项,可以创建一个共享对象文件(动态链接库)。创建共享对象文件的输入必须是一个已存在的对象文件。接下来可以创建可执行文件,并使其链接到动态库中。可是直接执行可执行文件,会发现无法找到对应的动态链接库。需要将当前路径加入动态库的搜索路径中。静态链接库的创建不依赖gcc指令,而是依赖ar命令:然后有两种方式可以使用静态链接库:1) 通过-static选项$ gcc -static -o circle circle.c -lcircleArea 这种用法要注意将链接库路径加入到环境变量LIBRARY_PATH中,否则只会链接系统默认的链接库。2) 指定外表链接库的静态链接版本$ gcc -o circle circle.c libcircleArea.a指定C语言版本在编写C程序时,首要任务是决定程序采用哪一种C语言定义。 GCC的语言标准化选项包括:-std=iso9899:1990, -std=c90, -std=c89, -ansi

这些选项都是同一个意思:遵循ISO/IEC 9899:1990

-std=iso9899:1999, -std=c99

遵循ISO/IEC 9899:1999

-std=iso9899:2011, -std=c11

遵循ISO/IEC 9899:2011编译器告警当编译C程序时,可能会获得来自GCC的两类提示。如果是错误信息(error message),则程序无法顺利地完成编译。如果是警告(warning),则是通知程序可能存在某些需要程序员了解和修改的地方,但是告警不会阻碍编译器完成编译。GCC对告警信息的控制基本都是以-W开头:-Werror

遇到任何警告都停止编译

-Wall

显示除了-Wshadow指示的告警以外的所有告警

-Wno-switch-default

关闭对于switch语句没有default标签的警告优化 GCC采用了许多技术使得生成的可执行程序更小、运行更快。这些技术都倾向于降低程序源代码与机器码之间“一对一”的对应关系,进而导致调试更加困难。因此,通常在程序已经完成测试与调试之后,才会应用相关的优化技术。以-f开头的选项,指示采用的优化技术。例如-fmerge-constants选项会让编译器将常量放在一个位置。-O选项设定优化等级。-O0

关闭所有的优化选项

-O, -O1

让可执行文件更小、执行地更快,但是不会因此增加过多的编译时间

-O2

应用几乎所有支持的优化技术

-O3

生成inline函数,并且让变量在CPU寄存器中更加灵活地分配空间。同时包括了-O2所用的优化。

-Os

优化程序大小。编辑于 2022-01-16 20:39GCCC / C++C++​赞同 2​​添加评论​分享​喜欢​收藏​申请

gcc 编译命令详解及最佳实践 - 知乎

gcc 编译命令详解及最佳实践 - 知乎首发于人人都懂物联网切换模式写文章登录/注册gcc 编译命令详解及最佳实践阿基米东GetIoT.tech 创办人,Indie Hacker介绍GCC(英文全拼:GNU Compiler Collection)是 GNU 工具链的主要组成部分,是一套以 GPL 和 LGPL 许可证发布的程序语言编译器自由软件,由 Richard Stallman 于 1985 年开始开发。GCC 原名为 GNU C语言编译器,因为它原本只能处理 C 语言,但如今的 GCC 不仅可以编译 C、C++ 和 Objective-C,还可以通过不同的前端模块支持各种语言,包括 Java、Fortran、Ada、Pascal、Go 和 D 语言等等。GCC 的编译过程可以划分为四个阶段:预处理(Pre-Processing)、编译(Compiling)、汇编(Assembling)以及链接(Linking)。Linux 程序员可以根据自己的需要控制 GCC 的编译阶段,以便检查或使用编译器在该阶段的输出信息,帮助调试和优化程序。以 C 语言为例,从源文件的编译到可执行文件的运行,整个过程大致如下。各文件后缀说明如下:后缀描述后缀描述.cC 源文件.s/.S汇编语言源文件.C/.cc/.cxx/.cppC++ 源文件.o/.obj目标文件.hC/C++ 头文件.a/.lib静态库.i/.ii经过预处理的 C/C++ 文件.so/.dll动态库语法: gcc [options] file...选项:-pass-exit-codes :从一个阶段以最高错误代码退出。--target-help :显示特定于目标的命令行选项。--help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...] :显示特定类型的命令行选项(使用 -v --help 显示子进程的命令行选项)。-dumpspecs :显示所有内置规范字符串。-dumpversion :显示编译器的版本。-dumpmachine :显示编译器的目标处理器。-print-search-dirs :显示编译器搜索路径中的目录。-print-libgcc-file-name :显示编译器配套库的名称。-print-file-name= :显示库 的完整路径。-print-prog-name= :显示编译器组件 的完整路径。-print-multiarch :显示目标的规范化 GNU 三元组,用作库路径中的一个组件。-print-multi-directory :显示 libgcc 版本的根目录。-print-multi-lib :显示命令行选项和多个库搜索目录之间的映射。-print-multi-os-directory :显示操作系统库的相对路径。-print-sysroot :显示目标库目录。-print-sysroot-headers-suffix :显示用于查找标题的 sysroot 后缀。-Wa, :将逗号分隔的 传递给汇编器(assembler)。-Wp, :将逗号分隔的 传递给预处理器(preprocessor)。-Wl, :将逗号分隔的 传递给链接器(linker)。-Xassembler :将 传递给汇编器(assembler)。-Xpreprocessor :将 传递给预处理器(preprocessor)。-Xlinker :将 传递给链接器(linker)。-save-temps :不用删除中间文件。-save-temps= :不用删除指定的中间文件。-no-canonical-prefixes :在构建其他 gcc 组件的相对前缀时,不要规范化路径。-pipe :使用管道而不是中间文件。-time :为每个子流程的执行计时。-specs= :使用 的内容覆盖内置规范。-std= :假设输入源为 。--sysroot= :使用 作为头文件和库的根目录。-B :将 添加到编译器的搜索路径。-v :显示编译器调用的程序。-### :与 -v 类似,但引用的选项和命令不执行。-E :仅执行预处理(不要编译、汇编或链接)。-S :只编译(不汇编或链接)。-c :编译和汇编,但不链接。-o :指定输出文件。-pie :创建一个动态链接、位置无关的可执行文件。-I :指定头文件的包含路径。-L :指定链接库的包含路径。-shared :创建共享库/动态库。-static :使用静态链接。--help :显示帮助信息。--version :显示编译器版本信息。示例阶段编译假设有文件 hello.c,内容如下: #include

int main(void)

{

printf("Hello, GetIoT\n");

return 0;

}编译 hello.c,默认输出 a.out gcc hello.c编译 hello.c 并指定输出文件为 hello gcc hello.c -o hello只执行预处理,输出 hello.i 源文件 gcc -E hello.c -o hello.i只执行预处理和编译,输出 hello.s 汇编文件 gcc -S hello.c也可以由 hello.i 文件生成 hello.s 汇编文件 gcc -S hello.i -o hello.s只执行预处理、编译和汇编,输出 hello.o 目标文件 gcc -c hello.c也可以由 hello.i 或 hello.s 生成目标文件 hello.o gcc -c hello.i -o hello.o

gcc -c hello.s -o hello.o由 hello.o 目标文件链接成可执行文件 hello gcc hello.o -o hello使用静态库创建一个 foo.c 文件,内容如下: #include

void foo(void)

{

printf("Here is a static library\n");

}将 foo.c 编译成静态库 libfoo.a gcc -c foo.c # 生成 foo.o 目标文件

ar rcs libfoo.a foo.o # 生成 libfoo.a 静态库查看文件描述 $ file *

foo.c: C source, ASCII text

foo.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped

libfoo.a: current ar archive修改 hello.c 文件,调用 foo 函数 #include

void foo(void);

int main(void)

{

printf("Hello, GetIoT\n");

foo();

return 0;

}编译 hello.c 并链接静态库 libfoo.a(加上 -static 选项) gcc hello.c -static libfoo.a -o hello也可以使用 -L 指定库的搜索路径,并使用 -l 指定库名 gcc hello.c -static -L. -lfoo -o hello运行结果 $ ./hello

Hello, GetIoT

Here is a static library查看 hello 文件描述 $ file hello

hello: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, BuildID[sha1]=b72236c2211dd8f0c3003bc02ad5e70bb2354e8c, for GNU/Linux 3.2.0, not stripped使用共享库修改 foo.c 文件,内容如下: #include

void foo(void)

{

printf("Here is a shared library\n");

}将其编译为动态库/共享库(由于动态库可以被多个进程共享加载,所以需要使用 -fPIC 选项生成位置无关的代码 gcc foo.c -shared -fPIC -o libfoo.sohello.c 代码无需修改,内容仍然如下: #include

void foo(void);

int main(void)

{

printf("Hello, GetIoT\n");

foo();

return 0;

}编译 hello.c 并链接共享库 libfoo.so gcc hello.c libfoo.so -o hello也可以使用 -L 和 -l 选项指定库的路径和名称 gcc hello.c -L. -lfoo -o hello 但是此时运行 hello 程序失败 $ ./hello

./hello: error while loading shared libraries: libfoo.so: cannot open shared object file: No such file or directory原因是找不到 libfoo.so 共享库 $ ldd hello

linux-vdso.so.1 (0x00007fff5276d000)

libfoo.so => not found

libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcc90fa7000)

/lib64/ld-linux-x86-64.so.2 (0x00007fcc911bd000)这是因为 libfoo.so 并不在 Linux 系统的默认搜索目录中,解决办法是我们主动告诉系统,libfoo.so 共享库在哪里。方式一:设置环境变量 LD_LIBRARY_PATH export LD_LIBRARY_PATH=$(pwd)将 libfoo.so 所在的当前目录添加到 LD_LIBRARY_PATH 变量,再次执行 hello $ ./hello

Hello, GetIoT

Here is a shared library方式二:使用 rpath 将共享库位置嵌入到程序 gcc hello.c -L. -lfoo -Wl,-rpath=`pwd` -o hellorpath 即 run path,是种可以将共享库位置嵌入程序中的方法,从而不用依赖于默认位置和环境变量。这里在链接时使用 -Wl,-rpath=/path/to/yours 选项,-Wl 会发送以逗号分隔的选项到链接器,注意逗号分隔符后面没有空格哦。这种方式要求共享库必须有一个固定的安装路径,欠缺灵活性,不过如果设置了 LD_LIBRARY_PATH,程序加载时也是会到相应路径寻找共享库的。方式三:将 libfoo.so 共享库添加到系统路径 sudo cp libfoo.so /usr/lib/执行程序 $ ./hello

Hello, GetIoT

Here is a shared library如果 hello 程序仍然运行失败,请尝试执行 ldconfig 命令更新共享库的缓存列表。此时,再次查看 hello 程序的共享库依赖 $ ldd hello

linux-vdso.so.1 (0x00007ffecfbb1000)

libfoo.so => /lib/libfoo.so (0x00007f3f3f1ad000)

libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3f3efbb000)

/lib64/ld-linux-x86-64.so.2 (0x00007f3f3f1d6000)可以看到 libfoo.so 已经被发现了,其中 /lib 是 /usr/lib 目录的软链接。示例代码可以在 GitHub 找到。原文链接:发布于 2021-06-12 16:02Linux 开发GCC嵌入式开发​赞同 118​​2 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录人人都懂物联网用通俗易懂、案例分析的方式介绍物联网AIoT技术不误正业的编程CODE~模型部署学习HPC cuda tenso

GCC编译过程(预处理->编译->汇编->链接) - 知乎

GCC编译过程(预处理->编译->汇编->链接) - 知乎切换模式写文章登录/注册GCC编译过程(预处理->编译->汇编->链接)程序猿编码前言如果你使用集成环境开发。那么你点击编译按钮就可生成可执行文件。但是C程序从源代码到二进制行程序都经历了那些过程?你知道吗?这些过程集成开发环境在点击编译按钮后都做完了,如果编译没有出错,即可生成可执行文件。本文将以Linux下C语言的编译过程为例。对编译过程进行讨论。编译一个C程序代码下面以Linux环境下的test.c为例,test.c里的代码为:#include

int main(int argc, char const *argv[])

{

printf("hello 程序猿编码\n");

return 0;

}

编译输出:这个过程如此熟悉,以至于觉得编译是一件很简单的事。事实真的如此吗?我们来细看一下C语言的编译过程到底是怎样的。GCC编译过程:图片来源于:GCC和Make编译,链接和构建C/C ++应用程序上述gcc命令其实依次执行了四步操作:1.预处理(Preprocessing)2.编译(Compilation),3.汇编(Assemble),4.链接(Linking)。预处理以“#”号开头的预处理指令如包含#include,宏定义制定#define等。在源程序中这些指令都放在函数之外,而且一般放在源文件的前面。使用预处理器把源文件test.c经过预处理生成test.i文件。预处理的命令为:gcc -E test.c -o test.i

上述命令中-E是让编译器在预处理之后就退出,不进行后续编译过程;-o是指定输出文件名。在本例中,预处理结果就是将stdio.h 文件中的内容插入到test.c中了。预处理生成的是test.i的文本文件,这个文本文件是可以直接通过cat命令进行文本文件查看的。对比预处理、文本文件、可执行文件的大小经过预处理之后代码体积会大很多,相当于可执行文件一倍大小。预处理之后的程序还是文本,可以用文本编辑器打开。编译这里的编译不是指程序从源文件到二进制程序的全部过程,而是指将经过预处理文件(test.i)之后的程序转换成特定汇编(test.s)代码的过程。编译的命令为:gcc -S test.i -o test.s

上述命令中-S让编译器在编译之后停止,不进行后续过程;-o是指定输出文件名。编译过程完成后,将生成程序的汇编代码test.s,这也是文本文件。查看汇编代码和代码大小:编译成汇编文件大小已经非常小了,没有像预处理的时候文件大小这么臃肿。cat test.s里面汇编是什么意思,就不要问我了。哈哈~汇编汇编过程将上一步的汇编代码转换成机器码,这一步产生的文件叫做目标文件,是二进制格式。编译的命令为:gcc -c test.s -o test.o

部分内容截图如下:链接链接过程使用链接器将该目标文件与其他目标文件、库文件、启动文件等链接起来生成可执行文件。附加的目标文件包括静态连接库和动态连接库。链接过程的命令为:gcc test.o -o test

总结生成可执行程序过程为成四个步骤:1、由.c文件到.i文件,这个过程叫预处理。2、由.i文件到.s文件,这个过程叫编译。3、由.s文件到.o文件,这个过程叫汇编。4、由.o文件到可执行文件,这个过程叫链接。欢迎关注微信公众号“程序猿编码” ,这里Linux c/c++ 、Python、Go语言、数据结构与算法、网络编程相关知识,常用的程序员工具。每日00:10之前更新新闻简报,一份简报,纵览天下事!编辑于 2020-03-16 18:59GCC汇编语言编译​赞同 154​​8 条评论​分享​喜欢​收藏​申请

GCC, the GNU Compiler Collection - GNU Project

GCC, the GNU Compiler Collection

- GNU Project

GCC, the GNU Compiler Collection

The GNU Compiler Collection includes front ends for

C,

C++,

Objective-C, Fortran,

Ada, Go, and D, as well as libraries for these languages (libstdc++,...).

GCC was originally written as the compiler for the GNU operating system.

The GNU system was developed to be 100% free software, free in the sense

that it respects

the user's freedom.

We strive to provide regular, high quality

releases, which we want to work well on a variety

of native and cross targets (including GNU/Linux), and encourage everyone

to contribute changes or help

testing GCC.

Our sources are readily and freely available via

Git and weekly

snapshots.

Major decisions about GCC are made by the

steering committee, guided by the

mission statement.

News

GCC developer room at FOSDEM 2024: Call for Participation open

[2023-11-20]

FOSDEM 2024: Brussels, Belgium, February 3-4 2024

GNU Tools Cauldron 2023

[2023-09-05]

Cambridge, United Kingdom, September 22-24 2023

GCC 13.2 released

[2023-07-27]

GCC 10.5 released

[2023-07-07]

GCC Code of Conduct adopted

[2023-06-16]

GCC 11.4 released

[2023-05-29]

GCC 12.3 released

[2023-05-08]

GCC 13.1 released

[2023-04-26]

GCC BPF in Compiler Explorer

[2022-12-23]

Support for a nightly build of the bpf-unknown-none-gcc compiler

has been contributed to Compiler Explorer (aka godbolt.org) by Marc

Poulhiès

Modula-2 front end added

[2022-12-14]

The Modula-2 programming language front end has been added to GCC.

This front end was contributed by Gaius Mulley.

GNU Tools Cauldron 2022

[2022-09-02]

Prague, Czech Republic and online, September 16-18 2022

GCC 12.2 released

[2022-08-19]

GCC 10.4 released

[2022-06-28]

GCC 9.5 released

[2022-05-27]

GCC 12.1 released

[2022-05-06]

GCC 11.3 released

[2022-04-21]

Older news |

More news? Let gerald@pfeifer.com know!

Supported Releases

GCC 13.2

(changes)

Status:

2023-07-27

(regression fixes & docs only).

Serious

regressions.

All

regressions.

GCC 12.3

(changes)

Status:

2023-05-08

(regression fixes & docs only).

Serious

regressions.

All

regressions.

GCC 11.4

(changes)

Status:

2022-04-21

(regression fixes & docs only).

Serious

regressions.

All

regressions.

Development:

GCC 14.0 (release criteria, changes)

Status:

2024-03-04

(regression fixes & docs only).

Serious

regressions.

All

regressions.

Search our site

Match:

All words

Any word

Boolean expression

Sort by:

Newest

Best Match

There is also a

detailed search form.

Get our announcements

About GCC

Mission

Releases

Snapshots

Mailing lists

Contributors

@gnutools

Mastodon

Documentation

Installation

· Platforms

Manual

FAQ

Wiki

Pointers

Download

Mirrors

Binaries

Sources

Git

...write access

Rsync

Development

Plan

& Timeline

Contributing

Why contribute?

Open projects

Front ends

Back ends

Extensions

Testing

Benchmarks

Translations

Bugs

Known bugs

How to report

Bug tracker

· Management

For questions related to the use of GCC,

please consult these web pages and the

GCC manuals. If that fails,

the gcc-help@gcc.gnu.org

mailing list might help.

Comments on these web pages and the development of GCC are welcome on our

developer list at gcc@gcc.gnu.org.

All of our lists

have public archives.

Copyright (C)

Free Software Foundation, Inc.

Verbatim copying and distribution of this entire article is

permitted in any medium, provided this notice is preserved.

These pages are

maintained by the GCC team.

Last modified 2024-03-04.