求论坛中(外)的 GCC/G++ 相关的优秀的教程帖子
本帖最后由 奶茶newfish 于 2021-9-2 11:48 编辑记得之前在论坛的那个板块下看到过 GCC/G++ 相关的帖子,但是忘记收藏了。
现在想求一篇好的文章。同时也记录一下。
有奖回答,1/2 的概率中奖 你指的是 GCC/G++ 的使用教程?
man 手册加百度完全够用
哦,再加 Google 翻译
Google 翻译对程序员比较友好,有道翻译相对来说要差一点
也许说成是差很多?居然翻译出一个完全相反的结果,^_^
人造人 发表于 2021-9-2 11:55
你指的是 GCC/G++ 的使用教程?
man 手册加百度完全够用
是的是的,我看了一下官网,没找到 API 奶茶newfish 发表于 2021-9-2 20:37
是的是的,我看了一下官网,没找到 API
就是编译选项吧?
一般来说,下面这个就够了
gcc -g -Wall -o main main.c
gcc [-c|-S|-E] [-std=standard]
[-g] [-pg] [-Olevel]
[-Wwarn...] [-Wpedantic]
[-Idir...] [-Ldir...]
[-Dmacro[=defn]...] [-Umacro]
[-foption...] [-mmachine-option...]
[-o outfile] [@file] infile...
Only the most useful options are listed here; see below for the
remainder.g++ accepts mostly the same options as gcc.
-gProduce debugging information in the operating system's native
format (stabs, COFF, XCOFF, or DWARF).GDB can work with this
debugging information.
On most systems that use stabs format, -g enables use of extra
debugging information that only GDB can use; this extra information
makes debugging work better in GDB but probably makes other
debuggers crash or refuse to read the program.If you want to
control for certain whether to generate the extra information, use
-gstabs+, -gstabs, -gxcoff+, -gxcoff, or -gvms (see below).
-Wall turns on the following warning flags:
-Waddress -Warray-bounds=1 (only with -O2) -Warray-parameter=2 (C
and Objective-C only) -Wbool-compare -Wbool-operation
-Wc++11-compat-Wc++14-compat -Wcatch-value (C++ and Objective-C++
only) -Wchar-subscripts -Wcomment -Wduplicate-decl-specifier (C and
Objective-C only) -Wenum-compare (in C/ObjC; this is on by default
in C++) -Wformat -Wformat-overflow -Wformat-truncation
-Wint-in-bool-context -Wimplicit (C and Objective-C only)
-Wimplicit-int (C and Objective-C only)
-Wimplicit-function-declaration (C and Objective-C only)
-Winit-self (only for C++) -Wlogical-not-parentheses -Wmain (only
for C/ObjC and unless -ffreestanding) -Wmaybe-uninitialized
-Wmemset-elt-size -Wmemset-transposed-args -Wmisleading-indentation
(only for C/C++) -Wmissing-attributes -Wmissing-braces (only for
C/ObjC) -Wmultistatement-macros -Wnarrowing (only for C++)
-Wnonnull -Wnonnull-compare -Wopenmp-simd -Wparentheses
-Wpessimizing-move (only for C++) -Wpointer-sign
-Wrange-loop-construct (only for C++) -Wreorder -Wrestrict
-Wreturn-type -Wsequence-point -Wsign-compare (only in C++)
-Wsizeof-array-div -Wsizeof-pointer-div -Wsizeof-pointer-memaccess
-Wstrict-aliasing -Wstrict-overflow=1 -Wswitch
-Wtautological-compare -Wtrigraphs -Wuninitialized
-Wunknown-pragmas -Wunused-function -Wunused-label -Wunused-value
-Wunused-variable -Wvla-parameter (C and Objective-C only)
-Wvolatile-register-var -Wzero-length-bounds
Note that some warning flags are not implied by -Wall.Some of
them warn about constructions that users generally do not consider
questionable, but which occasionally you might wish to check for;
others warn about constructions that are necessary or hard to avoid
in some cases, and there is no simple way to modify the code to
suppress the warning. Some of them are enabled by -Wextra but many
of them must be enabled individually.
-o file
Place the primary output in file file.This applies to whatever
sort of output is being produced, whether it be an executable file,
an object file, an assembler file or preprocessed C code.
If -o is not specified, the default is to put an executable file in
a.out, the object file for source.suffix in source.o, its assembler
file in source.s, a precompiled header file in source.suffix.gch,
and all preprocessed C source on standard output.
Though -o names only the primary output, it also affects the naming
of auxiliary and dump outputs.See the examples below.Unless
overridden, both auxiliary outputs and dump outputs are placed in
the same directory as the primary output.In auxiliary outputs,
the suffix of the input file is replaced with that of the auxiliary
output file type; in dump outputs, the suffix of the dump file is
appended to the input file suffix.In compilation commands, the
base name of both auxiliary and dump outputs is that of the primary
output file type; in dump outputs, the suffix of the dump file is
appended to the input file suffix.In compilation commands, the
base name of both auxiliary and dump outputs is that of the primary
output; in compile and link commands, the primary output name,
minus the executable suffix, is combined with the input file name.
If both share the same base name, disregarding the suffix, the
result of the combination is that base name, otherwise, they are
concatenated, separated by a dash.
gcc -c foo.c ...
will use foo.o as the primary output, and place aux outputs and
dumps next to it, e.g., aux file foo.dwo for -gsplit-dwarf, and
dump file foo.c.???r.final for -fdump-rtl-final.
If a non-linker output file is explicitly specified, aux and dump
files by default take the same base name:
gcc -c foo.c -o dir/foobar.o ...
will name aux outputs dir/foobar.* and dump outputs dir/foobar.c.*.
A linker output will instead prefix aux and dump outputs:
gcc foo.c bar.c -o dir/foobar ...
will generally name aux outputs dir/foobar-foo.* and
dir/foobar-bar.*, and dump outputs dir/foobar-foo.c.* and
dir/foobar-bar.c.*.
The one exception to the above is when the executable shares the
base name with the single input:
gcc foo.c -o dir/foo ...
in which case aux outputs are named dir/foo.* and dump outputs
named dir/foo.c.*.
The location and the names of auxiliary and dump outputs can be
adjusted by the options -dumpbase, -dumpbase-ext, -dumpdir,
-save-temps=cwd, and -save-temps=obj.
奶茶newfish 发表于 2021-9-2 20:37
是的是的,我看了一下官网,没找到 API
man gcc c语言中文
博客园
C语言论坛
人造人 发表于 2021-9-2 20:47
好的好的,谢谢啦 {:10_269:} {:10_256:} {:10_256:} {:10_256:} 学习 {:10_257:} 学习{:10_254:} 学习学习 {:10_275:} {:10_256:}{:10_256:} {:10_281:} {:10_249:}
页:
[1]
2