GCC命令与参数详解

news2024/12/23 18:47:19

GCC 命令与参数详解

无论是 C 还是 C++ 程序,将其从源代码转变为可执行代码的过程,具体可分为预处理 Preprocessing,编译 Compilation,汇编 Assembly,链接 Linking 这四个阶段。

默认情况下 GCC 指令会直接将源代码历经的四个阶段一气呵成地转变为可执行二进制代码,并且不会保留每个阶段产生的中间文件。

1. 编译过程

请添加图片描述

(1) 预处理生成 .i 文件,对这类文件执行编译就能生成 .s 文件。

(2) 编译生成 .s 文件,对这类文件执行汇编就能生成 .o 文件。

(3) 汇编生成 .o 文件,对这类文件执行连接就能生成可执行文件。

(4) 连接生成可执行二进制程序(例如 .exe 文件)。


我们使用 GCC 编译一个源代码文件的时候,可以不用逐阶段的去编译,而是可以让 GCC 将源代码文件一步到位编译到指定阶段,例如使用 -c 选项可以将源代码直接编译到 .o 文件,被跳过的预处理,编译阶段并不是不用执行,而是 GCC 会自动帮你执行跳过的阶段。

2. 命令规则

GCC 的命令编写快捷灵活,支持多个命令选项同时组合使用时可以无序或任意顺序排列需要用到的选项,即 GCC 没有要求用户在使用命令时需要按某个固定的顺序组合排列指定的命令选项。这样不需要用户在记住大量命令和选项的同时还需要记住多个选项同时使用时的排放顺序,所以大大提高了用户使用的便捷性命令的灵活性。

例如使用 GCC 编译 HelloWorld.c 文件,仅预处理成 .o 文件,并使用 -o 选项指定编译得到的目标文件名为 hello.o,那么我们编写该编译命令时命令可以这样 gcc HelloWorld.c -c -o hello.o 或这样 gcc -c -o hello.o HelloWorld.c 还可以这样 gcc -c HelloWorld.c -o hello.o

所以我们可以从中看出 GCC 的命令在指定一些选项时不需要按照规定某一个固定的顺序放置,可以由用户自由随机指定顺序放置。


但是有一点需要注意的是,如果需要指定含参数的选项,那么该选项的参数必须紧紧跟随在该选项的后面,比如指定目标文件名 -o hello 所以 hello 是紧紧跟随在 -o 后方的,参数在后方的同时不能被其他选项分隔的,例如这指定目标文件名 -o -c hello 选项 -o 的参数 hello 被其他的选项 -c 分隔了,所以这样命令格式就是错误的。

3. 疑问铺垫

文章开头提到过默认情况下 GCC 会直接将源代码转变为可执行文件需要的四个阶段一气呵成地执行完成,换句话说就是源码编译后直接就得到了可执行文件,虽然一气呵成但实际上还是逐步地执行了四个编译阶段的,只是在每个阶段不会输出中间临时文件让我们看见,非常的干净利落。

如果源程序仅有一个文件这完全没有任何问题,然而实际情况是源程序为了实现模块化一般都被拆分为多个文件组成,所以实际上每个文件都不是一个完整的程序,所以每个文件无法被单独编译成可执行文件。

所以通常做法是将每个源代码文件汇编成 .o 文件(即仅执行三个编译阶段到汇编阶段),最后将这些 .o 文件链接成一个完整的可执行文件(例如 .exe 文件)。一般情况下仅输出每个源代码的 .o 文件,不输出 .i.s 文件,当然也可以输出,只是输出了也用不着,连接时不需要它们。所以你会发现一般 IDE 编译输出目录下包含每个源代码的 .o 文件加一个最终的可执行文件。


所以要求 GCC 的编译过程可定制,例如让 GCC 将源代码编译到哪个阶段就编译到哪个阶段,由我们决定是否输出中间文件。而非默认将源代码一气呵成的编译成可执行文件。所以为了灵活应用 GCC 为我们提供了丰富的命令以及选项,供我们定制化编译流程,下面我们来详细看看 GCC 的命令以及命令参数。

4. 编译选项

GCC 的命令和选项多而复杂,所以不建议去逐个的记忆这些命令,实际上也无法记住。所以只要求记忆常用命令和选项,其余命令有大致了解即可,实际使用到复杂命令时(例如编写 Makefile 时)再查阅这些命令使用方法即可。

这里需要注意:命令选项分为带参数和不带参数两种,带参数选项需要跟随参数,例如 -o 选项,命令选项区分大小写,还要注意有些选项的参数还需要与选项贴合,例如 -O3-lm

命令和选项虽多但是大致分为:高频使用选项,警告信息控制选项,优化,输出文件,预处理,其他编译选项这六大类。

4.1 高频使用选项

(1) -c,执行汇编阶段,生成 object 目标文件。

(2) -E,执行预处理阶段,生成预处理文件。

(3) -S,执行编译阶段,生成汇编代码文件。

(4) -o [FILE],生成指定的输出文件,用在生成可执行文件时。

(5) -O0,不进行优化处理。

(6) -O,等同于 -O1 优化生成代码。

(7) -O2,比 -O1 进一步优化。

(8) -O3,比 -O2 更进一步优化,包括 inline 函数。

(9) -w,不生成任何警告信息。

(10) -W,只生成编译器认为会出现错误的警告。

(11) -Wall,生成所有警告信息。

(12) -g,生成调试信息,GNU 调试器调试时可利用该信息。

(13) -ansi,只支持 ANSI 标准的 C 语法,这一选项将禁止 GNU C 的一些些特色,例如 asm 或 typeof 关键词。

(14) -DMACRO,以字符串 “1” 定义 MACRO 宏。

(15) -DMACRO=DEFN,以字符串 “DEFN” 定义 MACRO 宏。

(16) -IDIRECTORY,指定额外的头文件搜索路径 DIRECTORY。

(17) -LDIRECTORY,指定额外的函数库搜索路径 DIRECTORY。

(18) -shared,生成共享目标文件。通常用在建立共享库时。

(19) -static,静态连接,即禁止使用共享连接。

(20) -UMACRO,取消对 MACRO 宏的定义。


高频使用选项由下面各类选项中提取而来,所以你会发现这里列出的一些选项与后面小节列出的选项存在重复。

4.2 警告信息控制选项

(1) -w,不生成任何警告信息。

(2) -W,只生成编译器认为会出现错误的警告。

(3) -Wall,生成所有警告信息。

(4) -Waddress,使用可疑的内存地址时给出警告。

(5) -Waggregate-return,当返回结构,联合或数组时给出警告。

(6) -Waliasing,为可能的虚参重叠给出警告。

(7) -Walign-commons,对 COMMON 块对齐的警告。

(8) -Wampersand,若延续字符常量中缺少 & 则给出警告,不支持 C 语言。

(9) -Warray-bounds,当数组访问越界时给出警告。

(10) -Warray-temporaries,创建临时数组时给出警告,不支持 C 语言。

(11) -Wattributes,当对属性的使用不合适时给出警告。

(12) -Wbad-function-cast,当把函数转换为不兼容类型时给出警告。

(13) -Wbuiltin-macro-redefined,当内建预处理宏未定义或重定义时给出警告。

(14) -Wc++-compat,当在 C 语言中使用了 C 与 C++ 交集以外的构造时给出警告。

(15) -Wcast-align,当转换指针类型导致对齐边界增长时给出警告。

(16) -Wcast-qual,当类型转换丢失限定信息时给出警告。

(17) -Wchar-subscripts,当下标类型为 char 时给出警告。

(18) -Wenum-compare,对不同枚举类型之间的比较给出警告。

(19) -Wformat,对 printf/scanf/strftime/strfmon 中的格式字符串异常给出警告

(20) -Wfloat-equal,当比较浮点数是否相等时给出警告。

(21) -Wignored-qualifiers,当类型限定符被忽略时给出警告。

(22) -Wimplicit,对隐式函数声明给出警告。

(23) -Wimplicit-function-declaration,对隐式函数声明给出警告。

(24) -Wimplicit-int,当声明未指定类型时给出警告。

(25) -Winline,当内联函数无法被内联时给出警告。

(26) -Wmain,对可疑的 main 声明给出警告。

(27) -Wswitch-enum,当使用枚举类型作为 switch 变量但又缺少某个 case 时给出警告。

(28) -Wuninitialized,自动变量未初始化时警告。

(29) -Wunused-value,当一个表达式的值未被使用时给出警告。

(30) -Wunused-variable,有未使用的变量时警告。

(31) -Wvla,使用变长数组时警告。

(32) -Wreturn-type,当 C 函数的返回值默认为 int,或者 C++ 函数的返回类型不一致时给出警告。

(33) -Wredundant-decls,对同一个对象多次声明时给出警告。

(34) -Wold-style-cast,程序使用 C 风格的类型转换时给出警告,不支持 C 语言。

(35) -Wempty-body,当 if 或 else 语句体为空时给出警告。

(36) -Winit-self,对初始化为自身的变量给出警告。

(37) -Wlong-long,当使用 -pedantic 时不对 long long 给出警告。

(38) -Wmissing-prototypes,全局函数没有原型时给出警告。

(39) -Wnonnull,当将 NULL 传递给需要非 NULL 类型的参数的函数时给出警告。

(40) -Wparentheses,可能缺少括号的情况下给出警告。

(41) -Wunused,启用所有关于 xx未使用 的警告。

(42) -Wvolatile-register-var,当一个寄存器变量被声明为 volatile 时给出警告。

(43) -Wundef,当 #if 指令中用到未定义的宏时给出警告。

(44) -Wenum-compare,对不同枚举类型之间的比较给出警告。

(45) -Wdouble-promotion,对从 float 到 double 的隐式转换给出警告。

(46) -Wnested-externs,当 extern 声明不在文件作用域时给出警告。

(47) -Wformat-zero-length,对长度为 0 的格式字符串给出警告。

(48) -Wendif-labels,当 #elif 和 #endif 后面跟有其他标识符时给出警告。

(49) -Wdiv-by-zero,对编译时发现的零除给出警告。

(51) -Wunused-macros,当定义在主文件中的宏未被使用时给出警告。

(52) -Wunused-function,有未使用的函数时警告。

(53) -Wswitch-default,当使用枚举类型作为开关变量,但没有提供 default 语句时给出警告。

(54) -Wunused-label,有未使用的标号时警告。

(55) -Wprotocol,当继承来的方法未被实现时给出警告,不支持 C 语言。

4.3 优化控制选项

(1) -O0,不进行优化处理。

(2) -O,即等同于 -O1,在不影响编译速度的前提下,尽量采用一些优化算法降低代码大小,和提高目标代码运行速度。

(3) -O2,该优化选项会牺牲部分编译速度,采用几乎所有的目标配置支持的优化算法以提高目标代码运行速度。

(4) -O3,最大化速度(maximize speed),会增加代码大小,即提高目标代码的并行执行能力。

(5) -Os,优选代码空间(favor code space)即优化生成目标文件的大小。

(6) -Og,启用全局优化(enable global optimization),为了能够生成更好的调试信息,精心挑选部分与调试不冲突的优化选项。

(7) -Ofast,使用最高级别的优化选项来编译代码,可以无视严格的语言标准以提高程序的执行速度。


般来说,如果不指定优化标识的话,GCC 就会产生可调试代码,每条指令之间将是独立的,可以在指令之间设置断点,使用 GDB 中的 p 命令查看变量的值,改变变量的值等,并且把获取最快的编译速度作为它的目标。

4.4 输出文件控制选项

(1) -Fa [file],命名程序集列表文件(name assembly listing file。

(2) -Fo,命名对象文件(name object file。

(3) -FA [sc],配置程序集列表(configure assembly listing。

(4) -Fp,命名预编译头文件(name precompiled header file。

(5) -Fd [file],命名 .PDB 文件(name .PDB file)。

(6) -Fr [file],命名源浏览器文件(name source browser file。

(7) -Fe,命名可执行文件(name executable file)。

(8) -FR [file],命名扩展 .SBR 文件(name extended .SBR file)。

(9) -Fm [file],命名映射文件(name map file)。

4.5 预处理控制选项

(1) -FI,命名强制包含文件(name forced include file)。

(2) -C,不吸取注释(don’t strip comments)。

(3) -U,移除预定义宏(remove predefined macro)。

(4) -D {=|#},定义宏(define macro)。

(5) -u,移除所有预定义宏(remove all predefined macros)。

(6) -E,将预处理定向到标准输出(preprocess to stdout)。

(7) -I,添加到包含文件的搜索路径(add to include search path)。

(8) -EP,将预处理定向到标准输出,不要带行号(preprocess to stdout, no #line)。

(9) -X,忽略 “标准位置”(ignore “standard places”)。

(10) -P,预处理到文件(preprocess to file)。

4.6 其它控制选项

(1) --version,显示 GCC 详细版本信息。

(2) -o [FILE],生成指定的输出文件,用在生成可执行文件时。

(3) -c,执行汇编阶段,生成 object 目标文件。

(4) -E,执行预处理阶段,生成预处理文件。

(5) -S,执行编译阶段,生成汇编代码文件。

(6) -x [language] [file name],根据约定 C 语言的后 缀名称是 .c ,如果不是 .c,则需要使用该选项指定文件类型,例如 -x c++ hello.a。

(7) -w,不生成任何警告信息。

(8) -W,只生成编译器认为会出现错误的警告。

(9) -Wall,生成所有警告信息。

(10) -g,生成调试信息到目标文件中,将编译时的调试信息保存到本地文件中(stabs,COFF,XCOFF,DWARF)。

(11) -ggdb,为 GDB 产生调试信息,包含 GDB 的扩展。

(12) -ggdb[level],设定产生何种等级的调试信息, level 为 1-3,1 最少,3 最多,例如 -ggdb3。

(13) -pipe,在多个编译过程之间使用管道。

(14) -static,静态连接,即禁止使用共享连接。

(15) -ansi,C 模式下支持所有 ISO C90 标准的 C 程序, C++ 模式下去除对 GNU C++ 扩展的支持(GNU 扩展会与 ISO C++ 冲突)。

(16) -std=,确定编译语言的标准,例如 -std=c11,目前只在编译 C 和 C++ 时有效 -fno-asm 不将 asm,inline,typeof 作为关键字,可以用他们做变量名等。

(17) -funsigned-char,将 char 的数据类型设为 unsigned,即无符号。

(18) -fsigned-char,正好相反,将 char 设为 signed,即有符号。

(19) -fsyntax-only,只检查语法错误,不做其他任何事。

(20) -pedantic,显示所有的 ISO C 和 ISO C++ 的警告,并且拒绝所有使用禁止扩展的程序。

(21) -ftime-report,统计编译消耗的时间并显示报告。

(22) -fmem-report,显示所有的静态内存分配。

(23) -ftest-coverage,为 gcov 工具产生数据文件。

(24) -DMACRO,以字符串 “1” 定义 MACRO 宏。

(25) -DMACRO=DEFN,以字符串 “DEFN” 定义 MACRO 宏。

(26) -IDIRECTORY,指定额外的头文件搜索路径 DIRECTORY。

(27) -LDIRECTORY,指定额外的函数库搜索路径 DIRECTORY。

(28) -shared,生成共享目标文件。通常用在建立共享库时。

(29) -UMACRO,取消对 MACRO 宏的定义。

(30) -M,生成文件关联的信息。包含目标文件所依赖的所有源代码

(31) -MM,和 -M 一样,但是它将忽略由 #include 造成的依赖关系。

(32) -MD,和 -M 相同,但是输出将导入到 .d 文件。

(33) -MMD,和 -MM 相同,但是输出将导入到 .d 文件。

(34) -I [dir],表示将 dir 目录添加到头文件搜索路径中,这样就可以直接使用 #include<header.h> 的形式进行包含。

(35) -I-[dir],表示将指定的目录从头文件搜索路径中移除,移除后将不再该路径搜索头文件。

(36) -idirafter [dir],在指定的头文件搜索路径里面查找失败,则到这里指定的目录中查找。

(37) -L [dir],制定编译的时候,指定库的搜索路径,告诉编译器在 dir 目录中查找库文件,例如指定搜索我们自定义库。

(38) -l[library name],指定编译时候使用的库,例如指定数学库 gcc hello.c -lm

5. 命令使用实例

命令:gcc [OPTIONS] [FILE],其中 OPTIONS 表示选项/参数,FILE 表示相关文件的名称,文件或选项可以多个同时使用,多个文件或选项顺序随意,依次列出即可,例如:gcc hello.c happly.c -o hello.exe -Ofast -g -Wall。

命令实例:

(1) 使用 GCC 编译程序很简单,直接将源代码文件名提供给 GCC,即可编译出可目标可执行文件,在不使用任何选项的情况下默认将编译到可执行文件阶段,并且输出的目标可执行文件名默认为 a.exea.out

gcc ./hello.c

(2) 使用 -o 选项来定义直观的目标文件名,这里定义目标文件名为 hello.exe 这时输出目标可执行文件名就不再是 a.exea.out 了。

gcc ./hello.c -o hello.exe

(3) 使用 -E 选项定制编译阶段,让 GCC 编译源代码文件时只要执行到预处理阶段即可,即执行预处理阶段后就停止并输出预处理阶段文件。

gcc -E ./hello.c -o hello.i

(4) 让 GCC 将预处理文件编译成汇编文件,即执行编译阶段后就停止并输出编译阶段得到的汇编文件。

gcc -S ./hello.i -o hello.s

(4) 让 GCC 将汇编文件汇编成 object 文件,即执行汇编阶段后就停止并输出汇编阶段得到的 object 文件。

gcc -c ./hello.s -o hello.o

(5) 让 GCC 将 object 文件连接成目标可执行文件,GCC 连接 object 文件没有相应的控制选项。

gcc ./hello.o -o hello.exe

(6) 也可以一步到位(使用一条命令)将源代码文件编译到汇编阶段,被跳过的预处理和汇编阶段由 GCC 帮我们执行。

gcc -c ./hello.c -o hello.o

(7) 开启编译时语法问题警告,例如这里开启了变量或函数处于隐式声明时输出相应警告,以及 #if 语句使用了未定义的宏定义时输出相应警告,开启后如果源代码存在语法问题就会在命令终端输出相应警告了。

gcc hello.c -o hello -Wimplicit -Wundef

(8) 如果需要启动优化,优化等级为 3,以及还需要生成调试信息到目标文件,方便使用 GDB 调试。开启优化后编译器会按照提供的选项执行相应等级的优化,启动生成调试信息后目标文件体积会明显增加。

gcc hello.c -o hello -g -O3

6. 总结

使用 GCC 需要对编译的四个阶段(编译过程),以及编译的规则有一定的了解,熟悉使用 GCC 对于编写 Makefile 具有决定性的作用。

GCC 的命令使用非常灵活,命令都以 gcc 开头然后配合待编译文件名,编译选项即可(可以说 GCC 就只有一条命令,只是编译选项较多而已)。命令选项可以随意组合,只需要注意选项是否包含参数即可,如果选项包含参数则参数需要紧紧跟随在选项后方。


以上就是 GCC 的一些参数及命令使用,熟悉 GCC 命令和参数有助于编写 Makefile,编写 Makefile 的前提就是就要熟悉 GCC 的命令,下一篇将会讲解 Makefile 相关的话题,深入的去理解 Makefile 的语法,敬请期待吧😊,如果以上内容对你有帮助就帮忙点点赞呗😍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/649402.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

websocket实时通信【纯后端——JAVA】

本文主要介绍一下websoket的实时通信&#xff0c;这里只有java的代码&#xff0c;通过在线网站 http://www.websocket-test.com/测试即可 1. 导包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocke…

亚马逊云科技re:Inforce 2023全球大会,让安全成为业务发展驱动力

S&P《企业之声&#xff1a;2022年信息安全、预算和展望》研究报告指出&#xff0c;有37%的受访者表示云基础设施安全是他们的主要安全支出&#xff0c;65%的受访者表示将计划采用云供应商的高级安全服务。安全是亚马逊云科技的重中之重&#xff0c;re:Inforce全球大会则深化…

开源字节 同城信息小程序

​从小程序发布至今&#xff0c;它已经成为各行各业的推广工具&#xff0c;借助微信服务平台平台流量优点&#xff0c;能帮助店家快速吸粉。 同城小程序项目成本低&#xff0c;使用灵巧便捷&#xff0c;实际操作工作效率高&#xff0c;有利于店家品牌营销。开源字节同城信息小程…

分享云安全领域技术创新及发展趋势,亚马逊云科技re:Inforce 2023全球大会为云上安全赋能

S&P《企业之声&#xff1a;2022年信息安全、预算和展望》研究报告指出&#xff0c;有37%的受访者表示云基础设施安全是他们的主要安全支出&#xff0c;65%的受访者表示将计划采用云供应商的高级安全服务。安全是亚马逊云科技的重中之重&#xff0c;re:Inforce全球大会则深化…

Matter实战系列-----4.matter设备的OTA

一、生成OTA固件升级压缩包 1.1 修改OTA固件版本号为3 1.2 编译生成 MatterLightOverThread_V3.ota 将编译得到的MatterLightOverThread.s37固件名称改成MatterLightOverThread_V3.s37&#xff0c;复制到以下Windows文件夹 C:\SiliconLabs\SimplicityStudio\v5\developer\ad…

Vue - 关于el-dialog 会让body 标签内的滚动条隐藏,导致窗口抖动的问题 和双滚动条问题

问题&#xff1a; 关于el-dialog 会让body 标签内的滚动条隐藏&#xff0c;导致窗口抖动的问题 抖动问题 抖动问题就不演示了&#xff0c;很简单&#xff0c;按如下配置就能解决&#xff1a; 双滚动条问题演示&#xff1a; 双滚动条解决效果演示&#xff1a; 解决方法&…

这几款实用的软件建议试一下

软件一&#xff1a;减肥计算器 「减肥计算器」是一款帮助用户进行减肥的专业工具。该工具提供了多种功能&#xff0c;包括计算BMI和卡路里、指定减肥目标以及个性化饮食建议等&#xff0c;帮助用户制定科学合理的减肥计划&#xff0c;并实现减重目标。 首先&#xff0c;「减肥…

Linux进程间通信 - 匿名管道(1)

之间我们学习了基础IO中有关文件&#xff0c;动静态库等知识&#xff0c;后面我们将讲述进程间通信的内容&#xff0c;在本文中就将来展示匿名管道。 进程间通信 进程间通信的目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程资源共享&#xff1a;多个进程…

Java低代码开发工具:jvs-rules 2.1.8 新版本功能清单

规则引擎用于管理和执行业务规则。它提供了一个中央化的机制来定义、管理和执行业务规则&#xff0c;以便根据特定条件自动化决策和行为。规则引擎的核心概念是规则。规则由条件和动作组成。条件定义了规则适用的特定情况或规则触发的条件&#xff0c;而动作定义了规则满足时要…

载誉而归丨盐城卓晨中心在第十届“北大青鸟杯”IT精英挑战赛中斩获多项殊荣!

2023年6月13日&#xff0c;第十届“北大青鸟杯”全国IT精英挑战赛华东&华中区域评审在合肥圆满落幕&#xff0c;当天下午&#xff0c;喜讯传来&#xff0c;北大青鸟盐城卓晨中心在此次比赛中摘得多项荣誉&#xff0c;包揽一、二、三等奖及优秀指导老师奖项&#xff0c;荣耀…

【Vue】学习笔记-VueRouter replace 编程式导航 缓存路由组件

VueRouter replace 编程式导航 缓存路由组件 路由跳转的replace方法编程式路由导航(不用<router-link>)缓存路由组件 路由跳转的replace方法 作用&#xff1a;控制路由跳转时操作浏览器历史记录的模式浏览器的历史记录有两种写入方式:push和replace push 是追加历史记录…

IntelliJ IDEA 2023.1中新的UI增强,加强了IDE编码体验!

IntelliJ IDEA&#xff0c;是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具&#xff0c;尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。 去…

专家意见何处寻:AI扮演领域专家角色为你答疑解惑

当我们寻求意见或建议时&#xff0c;ChatGPT是一个非常有用的工具。 作为通用的语言模型&#xff0c;ChatGPT 可以提供关于各种话题的建议和意见&#xff0c;如日常生活、工作、学习、人际关系、心理健康、科技和互联网、旅行和休闲、财务和投资、健康和医疗&#xff0c;以及环…

同事用python搞副业,失业了也能月入1W

今年2月&#xff0c;我失业了。好在是被裁的&#xff0c;有些补偿。裁的是整个部门&#xff0c;刚开始拿到赔偿以后还欢呼雀跃&#xff0c;天天聚会&#xff0c;天天嗨。到现在过去几个月了&#xff0c;我们没一个找到工作。我已经感受到了一股鸡蛋被煎糊的焦虑感 一次前同事聚…

新方案登场!“软硬兼施”让光伏组件焊接检测更高效

焊接是光伏组件生产中重要的工艺流程&#xff0c;就拿光伏组件中常见的组成部分——接线盒来举例&#xff0c;作为完成组件电力传输的关键器件&#xff0c;在组件的自动化生产过程中&#xff0c;接线盒的电极焊接质量直接关乎组件的性能&#xff0c;焊接质量检测的重要性不言而…

Dubbo简介和配置

1.Dubbo和OpenFeign的简介 Dubbo一个高性能rpc框架&#xff0c;用于构建分布式微服务架构&#xff0c;它提供了服务注册与发现&#xff0c;负载均衡&#xff0c;容错机制等功能。Dubbo具有高性能和低延迟的特点&#xff0c;适合于大规模的分布式系统。OpenFeign一个基于Java的…

Vue中如何进行屏幕录制与直播推流

Vue中如何进行屏幕录制与直播推流 屏幕录制和直播推流是现代Web应用中常用的功能&#xff0c;例如在线教育、视频会议和游戏直播等。Vue作为一种流行的JavaScript框架&#xff0c;提供了一些工具和库&#xff0c;可以方便地实现屏幕录制和直播推流功能。本文将介绍如何在Vue中…

解锁高效word开发!Word控件Aspose.words for.NET介绍

Aspose.Words 是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。 Aspose API 支持流行文件格式处理&#xff0c;…

hard fault on thread: mqtt0解决办法

rt thread版本4.1.0 使用paho mqtt软件包 运行一段时间后出现 psr: 0x21000000 r00: 0x5036fc8f r01: 0x5036fc88 r02: 0x00000000 r03: 0x5036fc8f r04: 0x00000007 r05: 0x00000063 r06: 0x00005f70 r07: 0x2001f1d8 r08: 0xdeadbeef r09: 0xdeadbeef r10: 0xdeadbeef r11…

如何知道mysql是否有设置密码

可以通过以下几种方式知道MySQL是否设置了 root 用户的密码: 1. 尝试使用root用户登录MySQL 打开终端窗口,运行以下命令尝试使用root用户登录MySQL: bash mysql -u root -p如果显示MySQL提示符mysql>,则说明没有为root用户设置密码。 如果提示输入密码,说明root用户已设置…