gnu相关内容
我知道inlcude_next恰好是C预处理程序的GNU扩展. 我在使用MSVC编译Gnu库代码时遇到问题.例如,有一个stdio.h头文件或GNU-like .使用MS编译器进行编译时,我得到invalid preprocessor command 'include_next'很好,因为没有类似Windows的#include_next指令.进行#include_next的主要
..
我正在使用MinGW GNU编译器编写C ++,当我尝试在switch语句中尝试使用外部定义的整数变量作为案例时,会出现问题.我收到以下编译器错误:"大小写标签没有减少为整数常量". 因为我已经将整数变量定义为extern,我相信它应该可以编译,所以有人知道问题出在哪里吗? 下面是一个示例: test.cpp #include #include "x_
..
我正在尝试建立一个名为 PBC (基于对的加密)的库.而且该库需要另一个名为 GMP -(GNU多重精度库)的库. 我的问题是正确安装GMP后,PBC出现以下错误: 找不到gmp库,将其路径添加到LDFLAGS 我不知道LDFLAGS是什么以及如何将其添加到路径中. PS:我正在使用MinGW. 解决方案 这个问题的描述性不足以使任何人都能很好地回答,但是....
..
我阅读表示tar条目类型为'L gnu tar和与gnu兼容的tar实用程序使用'(76)来表示存档中的下一个条目具有“长"名称.在这种情况下,条目类型为"L"的标题块通常会编码名称././@LongLink. 我的问题是:下一个区块的格式在哪里描述? tar存档的格式非常简单:它只是一系列512字节的块.在正常情况下,tar归档文件中的每个文件都表示为一系列块.第一个块是标题块,包含
..
如何为x和y轴上的值设置字体大小? 我环顾四周,我只找到改变xlabel大小和ylabel大小的方法,但是我希望轴下的实际数字更大. 解决方案 如果您不想更改字体,则对bb2的答案进行细化: set xtics font ", 30" 对于y轴上的抽动: set ytics font ", 30" 同时针对两个轴: set tics font ", 30"
..
_("hello,world \ n")参数对printf/puts的作用是什么?我经常在阅读GNU源代码时找到它. 解决方案 请参见 GNU Gettext -它(_(...))用作翻译的“绑定站点".
..
我有以下三个文件: $ cat pattern-ok ['\-] $ cat pattern-buggy [\-'] $ cat text abc'def-ghi 现在,以下是我不知道的错误或正则表达式功能吗? $ cat text | grep -f pattern-ok abc'def-ghi $ cat text | grep -f pattern-buggy gre
..
我很难理解为什么需要asprintf. 在手册中它说 函数asprintf()和vasprintf()是sprintf(3)和 vsprintf(3),除了它们分配的字符串足以容纳 输出包括终止的空字节,并返回一个指针 通过第一个参数.该指针应传递给 free(3)以在不再需要时释放已分配的存储. 这是我想要理解的示例: asprintf(&buffer, "/bin/echo
..
我正在分析linux异常代码. 顺便说一句,我无法理解gnu汇编语法. svc_preempt: mov r8, lr 1: bl preempt_schedule_irq @ irq en/disable is done inside ldr r0, [tsk, #TI_FLAGS] @ get new tasks TI_FLAGS
..
阅读有关如何在编译时增加使用gnu编译的c ++应用程序的堆栈大小的信息,我了解可以在程序开始时使用setrlimit完成此操作.但是,我找不到任何成功的示例来说明如何使用它,以及在程序的哪一部分中应用它以便为c ++程序获得64M的堆栈大小,有人可以帮助我吗? 感谢 解决方案 通常,在调用任何其他函数之前,通常应尽早(例如,在main()的开头)设置堆栈大小.通常,逻辑为:
..
在这个问题中,我意识到glob()的GLOB_BRACE选项,在搜索文件时允许使用一组有限的正则表达式. 这看起来就像我需要的,但是根据手册,GLOB_BRACE“在某些非GNU操作系统上不可用".其中似乎有Solaris. 我正在构建一个应尽可能具有可移植性的应用程序,因此我需要尽早检查可能的问题. 除Solaris之外,有人不了解其他不支持GLOB_BRACE的平台吗?例如,
..
在Visual Studio中,如果单击调用堆栈中的条目,则会打开编辑器并显示该函数的源代码. gdb中可能有类似的东西吗?我在gdb中使用tui(文本用户界面).是否可以使tui在backtrace中显示给定条目的源代码? 如果没有,那么您如何利用回溯中的信息?您是否手动打开文件并导航到正确的行? 解决方案 当您在断点处使用gdb(在任何模式下)停止并可以使用backtrace或w
..
使用GNU gdb调试c进程时. list命令将打印行,但不会告诉我文件名. 设置断点可以显示我想要的所有行和文件信息,但是我不想设置断点,而必须禁用或删除它. (gdb) b oyss_funtion Breakpoint 13 at 0x8049130: file main.c, line 119. 是否存在gdb命令或设置可以向我显示函数(符号)的文件行信息,而无需在那
..
在GDB中,给定一个指向结构的变量,print将显示原始指针值,而x将显示所指向的原始字节.有什么方法可以显示指向该结构的数据,即字段及其值的列表? 解决方案 print *variable 如果这样做,它将在GDB中显示该变量的值. 您还可以选择以缩进和换行形式显示该结构: $1 = { next = 0x0, flags = { sweet = 1, sour = 1 },
..
我使用了一些GNU扩展,并且意识到如果将gnu99设置为要使用的C标准,我可以省略#define _GNU_SOURCE. gnu99是否暗示_GNU_SOURCE还是使用它更安全还是必须使用以避免问题? 解决方案 您应该区分语言和库功能; -std = gnu99启用GNU语言功能,_GNU_SOURCE启用GNU库功能. 如果您使用任何库功能,建议您定义_GNU_SOURCE,因
..
当我查看GNU库的实现时(主要是libstdc ++),我可以看到命名中存在重复出现的模式.模板类型命名为_Tp,成员具有前缀_M_,某些标记具有前缀双下划线,依此类推.我试图查找有关命名约定的文档无济于事. GNU有一个样式指南,代码中也有遵循,但更像是该命名约定的子集. 您知道有关GNU gcc库实现的样式细节的任何文档吗? 谢谢. 解决方案 下划线不是“编码约定",而是为
..
代码print split("foo:bar", a)返回尝试基于字段分隔符进行剪切时执行split()的切片数量.由于默认的字段分隔符是空格,并且在"foo:bar"中没有空格,因此结果为1: $ awk 'BEGIN{print split("foo:bar",a)}' 1 但是,如果字段分隔符为“:",则结果显然为2("foo"和"bar"): $ awk 'BEGIN{FS
..
对于GCC CFLAGS选项:-msse,-msse2,-mssse3,-msse4,-msse4.1,-msse4.2.它们是专有用途还是可以一起使用? 我的理解是,要设置的选择取决于运行程序的目标拱门是否支持它-这是正确的吗? 如果是这样,我怎么知道目标弓所支持的功能?在Linux中,我使用/proc/cpuinfo,但如果使用Mac或Windows,该怎么办? 谢谢!
..
我正在读一本教科书,上面写着: 我们看到了编译器如何使用看似随意的约定将符号分配给COMMON和.bss。实际上,此约定是由于在某些情况下链接程序允许多个模块使用相同的名称定义全局符号。 只能定义一次变量?在某些情况下,链接程序允许您多次定义变量? 解决方案 这始终存在,因此包括以下排列的实际构建: #-Makefile ----- 全部:1 2 3 12 13 23
..
这主要是出于好奇。我了解,如果我用自己的库函数定义LD_PRELOAD自己的库,则库函数的定义可以替换(?)。我可以对可执行文件的主要方法做同样的事情吗? 也就是说,无需重建可执行文件,我可以对 runtime 做些什么,以便调用另一个main()吗? 解决方案 不,您不能使用 LD_PRELOAD 覆盖 LD_PRELOAD A空格分隔的列表,这些列表要由用户指定的其他
..