程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了是否有 gcc 标志指定在已经指定时不编译/链接?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决是否有 gcc 标志指定在已经指定时不编译/链接??

开发过程中遇到是否有 gcc 标志指定在已经指定时不编译/链接?的问题如何解决?下面主要结合日常开发的经验,给出你关于是否有 gcc 标志指定在已经指定时不编译/链接?的解决方法建议,希望对你解决是否有 gcc 标志指定在已经指定时不编译/链接?有所启发或帮助;

我有一个编译命令:

gcc -c -Demacs -I. -I../../src -I../lib -I../../lib -pthread -isystem /usr/include/gtk-3.0 -isystem /usr/include/at-spi2-atk/2.0 -isystem /usr/include/at-spi-2.0 -isystem /usr/include/dbus-1.0 -isystem /usr/lib/x86_64-linux-gnu/dbus-1.0/include -isystem /usr/include/gtk-3.0 -isystem /usr/include/gio-unix-2.0 -isystem /usr/include/cairo -isystem /usr/include/pango-1.0 -isystem /usr/include/fribIDi -isystem /usr/include/harfbuzz -isystem /usr/include/atk-1.0 -isystem /usr/include/cairo -isystem /usr/include/pixman-1 -isystem /usr/include/uuID -isystem /usr/include/freetype2 -isystem /usr/include/libpng16 -isystem /usr/include/gdk-pixbuf-2.0 -isystem /usr/include/libmount -isystem /usr/include/blkID -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -isystem /usr/include/uuID -isystem /usr/include/freetype2 -isystem /usr/include/libpng16 -isystem /usr/include/libpng16 -isystem /usr/include/dbus-1.0 -isystem /usr/lib/x86_64-linux-gnu/dbus-1.0/include -pthread -isystem /usr/include/libmount -isystem /usr/include/blkID -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -isystem /usr/include/freetype2 -isystem /usr/include/libpng16 -isystem /usr/include/uuID -isystem /usr/include/freetype2 -isystem /usr/include/libpng16 -isystem /usr/include/harfbuzz -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -isystem /usr/include/p11-kit-1 -fno-common -W -Wabsolute-value -Waddress -Waddress-of-packed-member -Waggressive-loop-optimizations -Wall -Wattribute-warning -Wattributes -Wbool-compare -Wbool-operation -WbuilTin-declaration-mismatch -WbuilTin-macro-redefined -WcAnnot-profile -Wcast-function-type -Wchar-subscripts -Wclobbered -Wcomment -Wcomments -Wcoverage-mismatch -Wcpp -Wdangling-else -Wdate-time -Wdeprecated -Wdeprecated-declarations -Wdesignated-init -WDisabled-optimization -Wdiscarded-array-qualifIErs -Wdiscarded-qualifIErs -Wdiv-by-zero -Wdouble-promotion -Wduplicated-cond -Wduplicate-decl-specifIEr -Wempty-body -Wendif-labels -Wenum-compare -Wexpansion-to-defined -Wextra -Wformat-contains-nul -Wformat-extra-args -Wformat-security -Wformat-signedness -Wformat-y2k -Wformat-zero-length -Wframe-address -Wfree-nonheap-object -Whsa -Wif-not-aligned -Wignored-attributes -Wignored-qualifIErs -Wimplicit -Wimplicit-function-declaration -Wimplicit-int -Wincompatible-pointer-types -Winit-self -Wint-conversion -Wint-in-bool-context -Wint-to-pointer-cast -WinvalID-memory-model -WinvalID-pch -Wlogical-not-parentheses -Wlogical-op -Wmain -Wmaybe-uninitialized -Wmemset-elt-size -Wmemset-transposed-args -Wmisleading-indentation -Wmissing-attributes -Wmissing-braces -Wmissing-declarations -Wmissing-include-dirs -Wmissing-parameter-type -Wmissing-profile -Wmissing-prototypes -Wmultichar -Wmultistatement-macros -Wnarrowing -Wnested-externs -Wnonnull -Wnonnull-compare -Wnull-dereference -Wodr -Wold-style-declaration -Wold-style-deFinition -Wopenmp-simd -Woverflow -Wpacked -Wpacked-bitfIEld-compat -Wpacked-not-aligned -Wparentheses -Wpointer-arith -Wpointer-compare -Wpointer-sign -Wpointer-to-int-cast -Wpragmas -Wpsabi -WreStrict -Wreturn-local-addr -Wreturn-type -Wscalar-storage-order -Wsequence-point -Wshift-count-negative -Wshift-count-overflow -Wshift-negative-value -Wsizeof-array-argument -Wsizeof-pointer-div -Wsizeof-pointer-memaccess -WStrict-aliasing -WStrict-prototypes -WStringop-truncation -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-final-methods -Wsuggest-final-types -Wswitch-bool -Wswitch-unreachable -Wtautological-compare -Wtrampolines -Wtrigraphs -Wuninitialized -WunkNown-pragmas -Wunused -Wunused-but-set-parameter -Wunused-but-set-variable -Wunused-function -Wunused-label -Wunused-local-typedefs -Wunused-macros -Wunused-result -Wunused-value -Wunused-variable -Wvarargs -WvariaDic-macros -Wvector-operation-perfoRMANce -Wvolatile-register-var -Wwrite-Strings -Walloc-size-larger-than=9223372036854775807 -Warray-bounds=2 -Wattribute-alias=2 -Wformat-truncation=2 -Wimplicit-fallthrough=5 -Wnormalized=nfc -Wshift-overflow=2 -WStringop-overflow=2 -Wvla-larger-than=4031 -Wredundant-decls -Wno-missing-fIEld-initializers -Wno-overrIDe-init -Wno-sign-compare -Wno-type-limits -Wno-unused-parameter -Wno-format-nonliteral -g3 -O2 ../../src/xfns.c

但我想附加 -H 标志 (https://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html),因为这是我唯一感兴趣的信息(但我需要保持原始编译命令的状态)。>

那么有没有办法阻止在这个命令中编译,即使我已经指定这样做?就像我可以附加(或前置)另一个标志,它基本上是说“我知道我指定了这个,但忽略它”。

解决方法

您可以使用 -o /dev/null 完全丢弃输出,或者您可以将其发送到一个临时文件,然后您将其删除。如果您关心编译时间,您可以添加 -E 以仅运行预处理器,这是使 -H 工作的最低要求。这是有效的,@R_262_8593@告诉 gcc 在预处理 (-H) 后停止,那么您是否也在创建目标文件 (-c) 后告诉它停止都没有关系。 (这是 gcc 使用一组冲突选项中的最后一个的一般规则的一个例外,该规则旨在让您通过添加到命令行的末尾来覆盖选项。)

但是,我不禁认为这并不是解决您问题的最佳方法。似乎您已经手工制作了一个带有多个选项的编译器调用,然后将其放在难以修改的地方。更好的解决方案是使用 makefile 并设置各种标准 makefile 变量的值——例如 CFLAGSCPPFLAGSLDFLAGSLDLIBS——它们是记录在 Gnu make manual 中。在简单的情况下,您的 @H_649_5@makefile 可能只包含设置这些变量的行,因为 Gnu make 具有针对常见目标的内置规则。

大佬总结

以上是大佬教程为你收集整理的是否有 gcc 标志指定在已经指定时不编译/链接?全部内容,希望文章能够帮你解决是否有 gcc 标志指定在已经指定时不编译/链接?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。