突出显示和筛选(gcc)编译器消息

我目前正在重构一个C项目,向我发出大约1000条警告。 是否有方法突出显示和过滤这些警告。 (例如,将所有索引警告设置为红色、未使用的蓝色和其他颜色) 很可能有些IDE可以做到这一点,但这对我来说不是解决方案。试试这个。我还发现了另外三个包:,或,或在emacs中编译给您带来了一些亮点。可以推测,这些细节可以定制 使用M-x compile并发出常用的构建命令(默认为make-k)。这个答案更多地介绍了重写旧C代码的一般方法 大量警告通常是同一小组警告的重复,因为头文件中存在一些错误,而其他源代

Gcc 在另一个.c文件中包含一个.c文件

这是家庭作业的一部分。我们要做的是编写一个makefile来编译以前的家庭作业解决方案。这些解决方案是由教授提供的,它们将用于测试我们的makefile。其中一个文件的#include“quicksort.c” 我知道这样的用法是不鼓励的,但这对我并没有什么帮助:) 编译这两个文件(文件quicksortTest.c,其中包括quicksort.c,以及quicksort.c本身)的最佳方法是什么 目前,我的makefile中包含以下内容: quicksort: quicksort.c

Gcc 如何让Bjam在cygwin上编译boost

我试图在cygwin上构建boost,但我找不到让bjam开始编译的方法。也许我错过了什么。有人能给我一个线索吗?仅供参考:我收到以下错误消息 $ bjam --without-python --without-serialization toolset=gcc-android4.4.3 link=s tatic runtime-link=static target-os=linux --stagedir=android warning: mismatched versions of Boost

Gcc xdebug-错误的ELF类:ELFCLASS64

我试图在我的x64 Arch Linux上运行xdebug,但没有成功。我已经安装了它,现在当我尝试运行lampp时,它会说: Failed loading /opt/lampp/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so:/opt/lampp/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so: wrong ELF class: ELFCLASS64 我做了一些搜索,发

为什么';GCC是否生成分辨率丢失警告?

考虑以下代码片段: long long someVar64 = 0LL; int someVar32 = someVar64; 如果不明显,这里有一个潜在的错误,64位值被分配给32位值,导致位丢失。在这种情况下,这很好,因为我们不关心0的高位,但是如果我更改常量,我很容易创建一个bug 为什么GCC(4.4.3)不为此代码生成警告?我记得以前的版本曾经使用过。此警告由-Wconversion启用。请注意,它不是由-Wall或-Wextra启用的 -Wconversion 警告可能改变值的隐式

bash:./mips linux gnu gcc:无法执行二进制文件错误

我最近在基于i686的linux机器上安装了一个mips-linux-gnu-gcccrosstool。当我想编译一些代码时,它向我显示了这个错误 每一个安装步骤都有一个 安装crosstool后,我编写了一个简单的helloworld C文件,如下所示: #include<stdio.h> int main(void) { printf("Hello World!\n"); return 0; } 编译器刚打印错误:

Gcc Libshout-2.3.1出错

我试图在Linux中从源代码构建libshout,但遇到了一个似乎无法解决的错误。My./configure命令运行时没有错误,但运行make时出现以下错误: /usr/bin/sed: can't read =/usr/lib/libogg.la: No such file or directory libtool: link: `=/usr/lib/libogg.la' is not a valid libtool archive make[3]: *** [libshout.la] Err

什么是;gcc-xW“;做

“-xW”标志的作用是什么? 我看到在链接阶段,有时会向gcc/icc提供这些信息。叮当声打断了这个,说: clang: error: language not recognized: 'W' 用法示例:这只是一个ICC选项: -xW -- Can generate SSE2 and SSE instructions, and it can optimize for Intel(R) Pentium(R) 4 processors and Intel(R)

与gcc中的相对路径链接

我将用一个简化的例子来解释我的情况 我有两个libme.so文件,它们有不同的实现,我已经验证了它们可以同时在单个设计中工作。一个位于./root/v1/,另一个位于./root/v2/ 我的“main”.so文件与这两个libme.so文件链接,位于./root/libtest.so 现在,我有一个要求,使事情重新定位。也就是说,如果我将整个“根”目录复制到另一个位置,甚至是另一台机器(假设二进制兼容),事情仍然可以正常工作 我的问题是,为了使这项工作正常进行,我应该使用什么gcc命令行来构建

gcc过滤器和gcc 4.7.2不工作,停止编译

我已在我的工具链中成功安装了gccfilter()。过滤器实际上应该可以工作,因为所有perl模块和其他东西都已安装。问题是,当我使用例如以下命令行时,它不能正常工作: gccfilter -c -a g++ -std=c++11 -O3 -DNDEBUG -I/"tonnes of includes" -o CMakeFiles/...../main.cpp.o -c /...path.../App/main.cpp .../variant.hpp:17:0,

Gcc 加载脚本以加载内存区域顶部的节

我正在做一个嵌入式系统的项目,使用ARM M0 必须创建一个ROM应用程序,其唯一目的是在ROM中存储内容,并在需要时初始化数据和bss部分 到目前为止,加载脚本如下所示: MEMORY { rom (rx): ORIGIN = 0, LENGTH = 32K ; ram (!rx): ORIGIN = 0x10000, LENGTH = 8K ; } SECTION { . = ORIGIN(rom) ; .text: { KEEP(*(.text)) ;

Gcc 如何用C语言中的一组对象文件编译一组C文件

所以我的问题是我有一组C文件(很多), 我还有另外一组已经编译过的c文件,它们被转换为type.o(对象)和.d(依赖项) 我的问题是: 现在在我的项目中,我必须添加第二组对象文件,并成功编译完整的支架,并从中创建一个二进制文件 实现这一目标的不同方式有哪些(利弊) 所需信息: -C汇编 -GNU工具链 -Hightec编译器 如果需要更多信息,请告诉我假设您不再需要接触第二组(目标文件集)的源代码,并且它不包含对第一组(.c文件集)的依赖,我只需将其所有.o文件塞进一个单独的库中,然后在最

Gcc OpenMp到Pthreads IR文件

了解openmp指令的pthread调用的gcc命令行语句有哪些?我知道在汇编、gimple、rtl和树中生成IR文件的-fdump命令行语句。但是我无法为openmp指令获取任何pthread转储 GCC不会直接将OpenMP pragmas转换为Pthreads代码。相反,它将每个OpenMP构造转换为对GNU OpenMP运行时库libgomp的一组调用。您可以通过使用-fdump tree all进行编译来获得中间表示。查找扩展名为.ompexp的文件 例如: #include <

Gcc 在fortran中检查数组的所有元素的逻辑条件

我想检查数组的所有行是否存在逻辑条件。我使用了GNU GCC指南中描述的函数ALL 下面是一个示例代码: program test3 implicit none real, allocatable, dimension (:,:) :: mat1 integer :: i,j,k,r logical :: lg r=3 allocate(mat1(r,r)) mat1=transpose( reshape( (/-1,-2,-3,-4,-5,-6,-7,-8,-9/), (/3,3/))) lg

草莓Perl是否附带完整的GCC?

我计划在我的项目中使用MinGW-w64的草莓Perl构建。所以,我想知道草莓Perl是与完整的GCC编译器(MinGW/MinGW-w64)捆绑在一起的,还是只是它使用的组件

Gcc 编译与netcdf关联的程序时Dwarf版本出错

我正在尝试编译一个程序,它是一个化学排放预处理器 这是它的编译过程的官方教程 我已经上传了原始源代码 通过预定义netcdf_dir,源代码应该编译好 但是当我使用/make_util megan_bio_emis时,错误显示如下: ========================================================================= Using gfortran fortran compiler ========================

Gcc 重命名第三方共享库是否无效?

我有一个由第三方提供的库,文件名是libPXTrader.so。但我想把它重命名为trader.so,在我的项目中。所以我把它改名了。奇怪的是,在我使用 gcc main.o third_party/lib/trader.so -o main 可执行文件main仍然链接到libPXTrader.so。 使用命令 ldd main 它表明找不到libPXTrader.so。我使用了strings trader.so并找到了字符串libPXTrader.so,我将这个共享库名称硬编码到so文件中

记事本++;带有avr gcc错误

我想在记事本++中创建一个run命令,每当我按下Ctrl+M时,该命令都会清除/删除已编译的文件。到目前为止,我创建了以下代码行: cmd /k c:\WinAVR-20100110\utils\bin\make.exe make clean $(FULL_CURRENT_PATH) 它不工作,并发出以下警告: 没有规则使目标变得干净 这在技术上意味着参数是错误的,但是我没有找到一种方法来纠正它 任何建议您都不希望将make作为参数传递给make,因为这样它将查找名为make的未定义目标 此外

Gcc 从thumb内联程序集分支到c符号

我使用的是Cortex-M0+设备(仅限拇指),我试图在ram中动态生成一些代码,然后跳转到它,就像这样: uint16_t code_buf[18]; ... void jump() { register volatile uint32_t* PASET asm("r0") = &(PA->OUTSET.reg); register volatile uint32_t* PACLR asm("r1") = &(PA->OUTCLR.reg); regis

Linux bootc.c中的GCC内联程序集:汇编程序消息:错误:junk';int 0x10h';表达后

我正试图通过gcc编译c文件并获得 错误 代码 GCC中的内联程序集是正常的字符串,遵循C或C++中的常规规则(无论您在编程中)。 这意味着相邻的文本字符串之间只有空格或注释,它们将被连接成单个字符串 你认为是什么 asm( "mov %al, 'H'" "int 0x10h" ); 从编译器的角度来看 asm( "mov %al, 'H' int 0x10h" ); 上述说明无效 这就是为什么,如果您查看许多GCC内联汇编的示例,那么在每一条装配线之后都需要换行。

Gcc 标识符"__shfl_down“;cuda-7.5未定义

在Ubuntu14.04(相当旧的配置)上用GCC4.8.4在CUDA7.5上编译程序时,我遇到了这个错误 error: identifier "__shfl_down" is undefined detected during instantiation of "T gmx_shfl_down_sync(unsigned int, T, unsigned int, int) [with T=float]" 指向哪一点 template <typename T> st

GCC扩展ASM语法:加载128位内存位置作为源

GCC为下面的shuffle()生成以下代码: 理想情况下,这应该是: pshufb xmm4,XMMWORD PTR [rip+0x125] 生成这条指令的扩展ASM语法是什么 非常感谢,, 亚当 PS:注释掉的内在函数为这个例子生成了最佳代码。这通常不起作用(在存在全局寄存器变量的情况下,GCC可能会生成不必要的寄存器副本) #包括 typedef int8_t xmm_t___属性(向量大小(16)); 常量xmm_t xmm_shuf={128,0,1,2,3,4,5,6,8,9,10

Gcc UHD在FreeBSD中产生链接器错误

我在freebsd上,试图从以下位置运行uhd:这通常应该在freebsd下运行,但当我尝试按照此处指定的方式构建它时,会遇到问题: 我得到: [ 73%] Building CXX object examples/CMakeFiles/benchmark_rx_rate.dir/benchmark_rx_rate.cpp.o Linking CXX executable benchmark_rx_rate ../lib/libuhd.so.003.000: undefined referen

Gcc 链接库的静态版本而不是动态版本

我正在尝试在我的应用程序中使用。创建项目将在.libs文件夹中生成一个libjpeg.a。我想做的是在链接阶段使用这个文件。我尝试了以下方法:我将libjpeg.a复制到C代码所在的文件夹中。试图与 gcc libjpeg.a mycode.c -o executable_name 失败了。如果我使用gcc-ljpeg-mycode.c,那么当我将标题改为指向而不是“libjpeg.h”时,编译是成功的,但这显然链接到库的系统范围动态版本 尝试与相对或绝对路径链接也会失败: gcc ./lib

Gcc 如何在Qt Creator中导航编译器错误?

如何在Qt Creator中导航编译器错误?一, 我是否缺少gcc设置?二, 例如,当我单击一个错误时,我希望Qt打开指向右行的正确文件 这是C++。我有一个Qt Creator项目。Creator基于Makefile 是否有其他环境可以使用.creator文件执行此操作?3. 例如,CodeLite?这应该是可行的。您正在运行哪个版本的Qt Creator?什么操作系统/发行版?QtCreator 1.3.1,基于Debian上的Qt4.6.3 64位。奥拉夫:啊,那确实很旧了。不记得那时候它

Gcc 为什么我不能构建更低版本的编译器

我目前正在尝试在最新更新的Ubuntu11.10上构建GCC4.4。然而,在尝试引导时,构建编译器总是会因一些问题而失败 找不到第一个crti.o和crtn.o。我将它们符号链接到搜索路径中的另一个目录中,这样我就可以得到一个引导编译器。但是,现在它失败了,并显示以下消息: $ ./host-x86_64-unknown-linux-gnu/prev-gcc/xgcc test.c xgcc: error trying to exec 'cc1': execvp: File or directo

Gcc 如何通过程序集预处理器传递--defsym?

这是关于一些使用公共makefile的arm汇编代码,但是对于需要预处理的文件(xxx.S)和不需要预处理的文件(xxx.S),它们的行为不同。在我的makefile中,我有以下内容: ASFLAGS += --defsym BACKDOOR_ADDR=0xC0004000 这似乎适用于所有未经预处理的旧程序集文件(xxx.s)。现在我有一个确实需要预处理(xxx.S),我得到了以下错误: 我试过这个: ASFLAGS += -Wa,--defsym,BACKDOOR_ADDR=0xC0004

GCC插件将代码作为文本注入当前翻译单元

我正在创建一个GCC插件,它需要在预处理之前将代码作为文本注入当前翻译单元 这段代码非常重要,是从提供给插件的外部文件动态生成的 我知道可以构建_decl等,将节点注入AST,以在插件_START _单元上实现相同的效果,但我可以想象,在GCC处理之前以文本形式注入代码更简单 另一种方法是编写一个单独的程序,在传递给GCC之前将生成的代码和翻译单元合并到一个中间文件中,但这会使行号有一定的偏差 这可以通过GCC插件实现吗?有一个外部程序发出#行指令,并且完全不依赖编译器。这个插件已经做了很多其他

什么是'__IO';GCC中的指令?

我在一个嵌入式设备上工作,有一些代码最初是使用IAR编译器编译的 我试图使用GCC编译器重新编译上述代码 有一条特殊的语句:typedef\uuu IO,它根本无法编译(“无法识别的符号错误”) 有人能建议我如何正确编译此语句吗?如果无法识别,则是因为未包含包含定义的适当系统标题 它将在随工具链提供的芯片支持头文件中定义。它是类型限定符,或者更确切地说是一个宏(#define),将扩展为类型限定符。例如,它的用途如下: __IO uint8_t CSSR; 这里的类型是uint8\t,因此u\

gccdll-在Linux下编译

我有一个在Linux环境下用gcc-bison-flex编写的项目。所有项目都实现为一个*.so文件,并从python tkinter graphic surface调用。 需要在windows上运行它。然而,我避免安装所有与gcc-bison-flex相当的windows程序。 是否有可能在LINUX环境中强制gcc编译WINDOWS DLL而不是*.so?使用与我现在相同的技术可以使生活变得更轻松:只需从python tkinter graphic surface调用即可。当然,您可以交叉编

Gcc 生成最简单的二进制代码obj文件

我需要生成一些简单的obj/o文件,其中包含我的二进制文件 程序体我需要写一些非常简单的部分汇编程序 我需要生成这样的obj二进制文件,我可以使用一些链接器来链接并运行我的过程。我想知道 1最简单的obj格式是什么?我需要一些我可以最终与gcc链接的东西,但如果有人认为更容易,就我所知,有一些工具可以将一种obj格式转换为另一种,因此我可以使用thic转换器 2我想知道生成这个obj上下文的代码是什么样子的-假设我有二进制asm内容要刷新,但我只需要在它周围创建obj信封 我甚至不需要刷新多个过

gcc预处理器能否知道是否已加载插件

假设我有一个插件,我使用gcc-fplugin=foo加载它 是否有任何定义的预处理器符号或宏,我可以使用它们有条件地编译出插件所需的语言特性 当然,我可以在命令行上提供该宏,例如-Dplugin\u foo\u loaded 但是如果这些宏是通过加载插件生成的,那就更好了 答案是什么?目前GCC4.9不能这样做,因为没有与预处理器相关的插件挂钩 我想最简单的方法就是通过a-DMYPLUGIN。或者在插件中定义一些内置元素 < PS. >如果你正在寻找一些关于GCC插件的教程材料,也可以考虑一些

Gcc 如何从内联程序集中返回字节或短字符

当我编译时: short foo (short x) { __asm ("mov %0, 0" : "=r" (x)); return x; } 我明白了 我不想要额外的指令sxth有符号提取半字 它之所以存在,是因为本例中的ABI ARM AEABI要求将函数返回值符号扩展到完整寄存器,但GCC不知道我的汇编代码可能对它提供给我的寄存器做了什么 我如何告诉GCC我承诺保持寄存器正确的符号扩展,这样它就不必插入这个额外的指令 我本以为它可以从我给它一个简短的表达式作为=r约束的表达式的

Gcc 从gdb确定编译器名称/版本

我在运行不同版本的gcc的计算机上共享我的.gdbinit脚本(通过NFS)。如果我正在调试的代码是用特定的编译器版本编译的,我希望执行一些gdb命令。gdb能做到这一点吗?我想到了这个: define hook-run python from subprocess import Popen, PIPE from re import search # grab the executable filename from gdb # this is probably not general eno

Gcc ARM、.公共部分和-fno公共标志

我在试着诊断一个问题。问题是如果我在程序的开头放一个printf(特别是printf),我的程序就可以正常工作,如果我不放,它就不能正常工作。这个问题非常特定于一个循环,该循环读取我在systick_处理程序中递增的systick变量 但是,如果我使用-fno-common编译,那么一切都正常。为什么会有这种行为 此外,我已经从我的链接器脚本中删除了.COMMON部分,因为它们使程序的大小几乎增加了一倍。不管怎样,没有它们,一切都运行得很好,但我怀疑它们的缺失是在我使用default(-fcom

GCC:为什么动态符号表中缺少全局变量?

代码: 跑步:(不重要) 美元/测试 v_标志=51914,&v_标志=0x601034 v_标志=51915 阅读符号表: $ ./test v_flag = 51914, &v_flag=0x601034 v_flag = 51915 $gcc—版本 gcc(gcc)4.4.7 20120313(红帽4.4.7-8) ... $ld--版本 GNU ld版本2.23.52.0.1-16.el7 20130226 ... $readelf-s测试 符号表“.dynsym”包含4个条目: Nu

Gcc 尝试使用Perl或MinGW或

我想使用frama-c进行静态c代码分析。我已经花了一些努力来正确安装它(希望如此)。这些文件位于C:\code分析\frama-C。我想通过Windows控制台应用它,例如: C:\code分析\frama-C\bin\frama-C hello.C c只是一个简单的hello world程序(顺便说一句,我不是c程序员,也是编程新手) 是的,我安装了Perl,但不知道Frama为什么使用它。在我看来,stdio.h似乎有点问题。这可能是吗?但是我可以成功地编译我的程序 C:\草莓\C\bin

Gcc 内置函数logl的不兼容隐式声明

当我编译这个简短的程序时 #include <math.h> #include <stdio.h> int main(void) { long double ld = logl(1L); printf("logl = %Lf\n", ld); } include文件math.h包含在/usr/include/math.h中 $ gcc -M foo.c foo.o: foo.c /usr/include/math.h /usr/incl

Gcc 海湾合作委员会。生成有限的调试信息

有没有办法强制gcc只生成完整调试信息的子集,这些信息足以满足addr2line实用程序的需要?或者有没有不必要的脱衣方式?我试过了 $objcopy--仅保留调试--删除节=.debug\u loc--删除节=.debug\u aranges--删除节=.debug\u frame我的elf文件 还有什么可以剥离的吗?您需要-g1。这将为回溯生成最小的调试信息。从手册中: 级别1生成的信息最少,足以在中进行回溯 您不打算调试的程序部分。这包括 函数和外部变量的说明,以及行号 表,但没有关于局部

Gcc 如何使用以下地址消毒器输出解决程序中的此分段错误?

这个问题是我上一个问题的续篇,当前状态是我已经获得了地址消毒剂的输出——由@Employed Russian建议——如下所示。这是我第一次使用地址消毒剂,请原谅我太天真了 ==2596== ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7fff89d67fd0 at pc 0x401f21 bp 0x7fff89d67d00 sp 0x7fff89d67cf8 READ of size 4 at 0x7fff89d67fd

如何在构建目标之外生成gcc调试符号?

我知道我可以使用-g选项生成调试符号。但是,该符号嵌入到目标文件中。gcc能否在结果可执行文件/库之外生成调试符号?与windows VC++编译器的.pdb文件类似。您需要使用objcopy来: 我使用下面的bash脚本将调试信息分离到.debug目录中扩展名为.debug的文件中。这样,我可以在一个tar文件中对库和可执行文件进行tar,在另一个tar文件中对.debug目录进行tar。如果我以后想添加调试信息,我只需提取调试tar文件,瞧,我有符号调试信息 这是bash脚本: #!/bin

Gcc “与”的区别是什么#pragma pack“;及__属性(“对齐”)”;

及 它们之间的区别是什么?pragma pack(字节对齐)影响由字节对齐输入指定的结构的每个成员,或影响其自然对齐边界,以较小者为准 \uuuu属性(对齐(字节对齐))影响变量的最小对齐方式(或结构字段,如果在结构中指定) 我认为以下是等效的 struct A { //... }; A a __attritube__((aligned(L1_CACHE_LINE))) 其中是一个属性((对齐(一级缓存线))将确保u int32\t A内部结构A将与2字节对齐,但不会以相同方式对齐其他变

如何在gcc中链接libatomic库

我正在库代码中使用头,并试图将程序链接到libatomic.so 每当我尝试链接所有对象文件并创建我的库的SO文件时,我都会遇到错误 can not find /usr/lib64/libatomic.so.1.0.0 我在路径/usr/lib/gcc/x86_64-redhat-linux/4.8.5下有这个so文件。 正如我所说的那样。名称中未指定任何版本 我试图在创建共享库的gcc命令上使用-L选项指定路径/usr/lib/gcc/x86_64-redhat-linux/4.8.5,但它

如何计算GCC中调用函数树所需的堆栈大小

是否可以在没有外部计算的情况下,直接在程序文本中确定堆栈上的非递归函数的需求?我需要它为非常小的微控制器(如AVR)中的线程分配内存资源。在调用函数之前,我需要知道这一点。指令——不幸的是,堆栈使用非常缺乏信息。或者我不明白什么?获取已传递参数的地址会将其放在堆栈上。因此,运行以下命令: #include <stdio.h> void my_fun(int dummy); int get_stack_space(int dummy); int main(void) { i

在linux上为avr交叉编译gcc 10.1.0失败

我试图在linux上为avr编译当前的gcc版本10.1.0,但失败了 '/home/krud/git_my_checkout/first/own_components/gcc_install/gcc/gcc-10.1.0/build/gcc' g++ -c -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-na

Gcc execstack标志的行为

我正在使用GCC7.5,在中找不到关于标志-z,noexecstack的信息 在哪里可以找到有关其行为的信息?例如,默认情况下是否启用它,如何检查它是否应用于我的文件等 我发现,自2019年11月7.5版发布以来,上面写着“标记由最新的GCC版本自动完成”。我假设这适用于GCC 7.5。来源: -z关键字 -z与关键字一起直接传递给链接器。有关允许的值及其含义,请参阅链接器文档中的部分 发件人: -z keyword The recognized keywords are: [.

使用CMake时出现Assimp编译错误:GCC无法编译测试程序

我正在尝试使用CMake为Windows 10编译ASIMP 5.0.1。我通过MinGW使用的C/C++编译器是GCC和G++。如果我正确理解了这个问题,那么MakeFile的空白部分就有问题。/CMakeTmp/目录是空的,我确信答案就在我面前的某个地方: 控制台输出: -- The C compiler identification is GNU 9.2.0 -- The CXX compiler identification is GNU 9.2.0 -- Detecting C com

上一页 1 2  3   4   5   6    7   8   9  ... 下一页 最后一页 共 163 页