草庐IT

linux - 没有 gcc 的 gdb

是否可以使用用as组装并用ld链接的程序来运行GDB?使用gcc添加标志-g允许调试,但我得到错误Nosymboltableisloaded。当我尝试向加载的程序添加断点时,使用"file"命令。谢谢!编辑也许我应该明确表示我正在学习和编程汇编。我真正想要的只是堆栈跟踪,但能够使用GDB会很棒。解决方案运行as-g即可。谢谢大家的回答!! 最佳答案 这是可能的。但是,您需要符号才能添加符号断点,符号由调试信息提供;确保您的汇编器和链接器提供这些。编辑对于GNUas,使用as-g。或者只使用gcc-g:如果你给它一个.s文件,它会调用

linux - 如何告诉 "gmake"使用另一个版本的 GCC? (Linux)

我的机器上有常用的gcc(在/usr/bin/gcc),当我为我正在使用的某个框架设置环境时,另一个(更新的)链接了。我想用/usr/bin/gcc上的旧版本编译,而不是使用较新的版本。我必须使用“gmake”命令进行编译(自定义编译设置)。在不更改PATH的情况下,我如何“告诉”gmake使用不同的gcc? 最佳答案 从命令行:gmakeCC=/usr/bin/gcc 关于linux-如何告诉"gmake"使用另一个版本的GCC?(Linux),我们在StackOverflow上找到一

c++ - 如何在 Linux (GCC) 中打印输出(不是标准输出)?

在Windows上有OutputDebugString功能,我如何在Linux上做同样的事情?更新:stderr和stdlog不是我想要的。那些被重定向到标准输出。P.S.和syslog没有区别。 最佳答案 我不确定OutputDebugString确实如此,但标准C++定义了标准错误流std::cerr和标准日志记录流std::clog.两者都在header中声明.它们在Linux中默认绑定(bind)到同一个文件描述符;区别在于cerr是无缓冲的,而clog被缓冲(我相信它是行缓冲的)。Linux中没有“系统调试器”的概念。如果

linux - gcc:错误:选项 ‘-mabi=aapcs-linux’中无法识别的参数

首先安装跨工具,然后构建工具链,然后构建内核,但是在为RAM编译内核2.6.34时,反复出现错误root@kali:~/felabs/sysdev/tinysystem/linux-2.6.34#makeARCH=armCROSS-COMPILE=arm-linux-scripts/kconfig/conf-sarch/arm/KconfigCHKinclude/linux/version.hUPDinclude/linux/version.hCHKinclude/generated/utsrelease.hUPDinclude/generated/utsrelease.hGenera

c++ - 成员: bug in GCC or my thinking?的初始化

我在类(class)的私有(private)部分中定义了一个枚举类型。我也定义了这种类型的成员。当我尝试在构造函数主体中初始化此成员时,我在运行时遇到内存损坏问题。当我通过same构造函数中的初始化列表对其进行初始化时,我没有遇到内存损坏问题。我做错了什么吗?我将简化代码,如果它是GCC错误,我确定它是我正在组合/继承/等的特定类的组合,但我保证这捕获了问题的本质.在初始化之前没有使用这个成员变量,在完全构造之前没有使用新创建的对象。这个成员的初始化确实是我在主体中做的第一件事,当内存损坏发生时,valgrind说它在我初始化变量的行上。Valgrind说这是大小为4的无效写入。相关头

c++ - 我怎样才能阻止 gcc 在较新的 ARM cpu 上发出 swap{b}?

我正在编译DCP-O-Matic在RaspberryPi2上收到以下警告:/tmp/ccu6rDcg.s:Assemblermessages:/tmp/ccu6rDcg.s:4208:Warning:swp{b}useisdeprecatedforARMv6andARMv7我已将“-mcpu=cortex-a8-mfpu=neon”传递给编译器,但我仍然收到警告。我很确定Linux内核中有一些东西使这个警告无关紧要,但我真的很想解决这个问题。这post有很多有用的信息,但我似乎找不到合适的开关来阻止警告。我已经验证没有使用swp{b}的显式汇编代码。谁能推荐清除这些警告的最佳方法?我真

c - 在 gcc 中初始化数组,未定义对 `memcpy' 的引用

我在Nachos3.4、Centos6.0中编写C,通过gcc2.95.3编译,我使用的命令行是gmakeall当我编译这个时,一切都很好intmain(){char*fname[]={"c(0)","c(1)","c(2)","c(3)","c(4)","c(5)","c(6)","c(7)"};return0;}但是当我这样做时,它说undefinedreferenceto'memcpy'intmain(){char*fname[]={"c(0)","c(1)","c(2)","c(3)","c(4)","c(5)","c(6)","c(7)","c(8)"};return0;}问

c++ - gcc (Linux/MinGW) 是否存在编译器标志以在运行时引发被零除的错误?

我有一个用C++编写的复杂模型,其中分母有时恰好为零。我通常会检查它们,但当我忘记时,调试它们会很痛苦,因为模型会在没有警告的情况下继续运行。是否有一个编译器标志,在linux的gcc和windows的MinGW的最新版本中工作,我可以用来告诉gcc编译以在(double之间)被零除时引发运行时错误?这在计算上是否昂贵(因此仅在调试版本中启用它)?我知道已经发布了一个类似的问题here,但答案更多是技术和理论快速评论的混合,而不是开发的答案。 最佳答案 对于linux中的gcc,您可以使用fenv.h或自c++11cfenf起在Wi

c - 为什么 GCC 会抛出关于未指定选项的错误?

当我使用GCC4.2.3从64位RedHatEnterpriseLinux5.0上的makefile运行以下命令时:gcc-c-ansi-pedantic-O0-fPIC-I.-I..-Iheader_files/include"source_file.c"我收到以下错误:cc1:error:unrecognizedcommandlineoption"-lang-c"从表面上看,问题是“-lang-c”在较新版本的GCC上不再是有效选项。然而,更深层次的问题是:为什么GCC会收到原始命令中没有的“-lang-c”选项?其他背景:当前安装没有我能找到的任何GCC“规范”文件运行“gcc-

linux - 使用交叉编译器为 arm 编译 native GCC

我正在寻找为ARM系统创建GCC的native构建,但我遇到了一些麻烦。构建机器是i686-linux。我看到的每个教程都告诉我如何设置实际的交叉编译套件(我已经使用crosstools-ng完成了)。但是,我没有看到任何与编译原生ARMGCC相关的内容。我使用的配置字符串在下面,我只使用header设置了sysroot。我还交叉编译并安装了GMP和MPFR。../../gcc-4.3.5/configure\--host=arm-unknown-linux-gnueabi\--build=i686-build_pc-linux-gnu\--target=arm-unknown-lin