glibc相关内容
为什么fputwc(),putwc()和putwchar()接受类型为wchar_t而不是wint_t的参数? 这与对应的非宽字符函数fputc(),putc()和putchar(),矛盾,后者采用int,而不是char . 解决方案 这是因为wchar_t要求保存WEOF值,而char不需要保存EOF值. 对于char,fputc(),putc()和putchar()函数需要接受可
..
我需要将snprintf()移植到另一个不完全支持GLibC的平台上. 我正在寻找Glibc 2.14源代码中的基础声明.我遵循许多函数调用,但是卡在vfprintf()上.然后,它似乎调用_IO_vfprintf(),但我找不到该定义.可能是宏混淆了事物. 我需要看一下真正的C代码,它扫描格式字符串并计算如果输入缓冲区足够大的话它将写入的字节数. 我也尝试在newlib 1.1
..
如果C语言中的gets()函数从文件中读取了零字节('\0'),它会停止吗? 快速测试:echo -ne 'AB\0CDE' 谢谢. 此问题来自以下问题的评论:返回libc-问题 PPS gets功能很危险,但这是关于此功能本身的问题,而不是有关是否应该使用它的问题. 解决方案 gets()的行为是,遇到换行符或遇到EOF时,它将停止.不管它是否读取\0个字节.
..
可能重复: 如何引导gcc/g ++? 我想知道gcc是如何编译的,因为我们都知道它是用C编写的. 他们是否使用了其他一些编译器来编写gcc? 如果是这样,我可以使用相同的编译器来编译我的C程序吗? 解决方案 这里没有鸡肉和鸡蛋. glibc是使用您使用的编译器进行编译的. 该编译器首先使用同一编译器的早期版本进行编译.然后它也可以自行编译. 真正的鸡和蛋问
..
我要运行的软件之一需要GLIBC_2.27,而我所看到的只是控制台上的此错误: /lib/x86_64-linux-gnu/libm.so.6: version 'GLIBC_2.27" not found 当我运行此命令ldd --version时,我得到以下输出: ldd(Ubuntu GLIBC 2.23-0ubuntu11) 2.23 如何将GLIBC更新为2.27并摆
..
是否可以(或可以)在Windows下使用glibc(作为msvcrt的替代品)?我知道这是一个愚蠢的问题,像cygwin这样的答案会弹出,但是我真的在问: 是否可以链接到Windows上的glibc并使用msvcrt之类的所有库函数? 解决方案 可能存在一种解决方法:如果某人结合了
..
我最近发现使用std::thread和dlopen的奇怪行为. 基本上,当我在使用dlopen加载的库中执行std::thread时,会收到一个sigsev.库本身与pthread链接,而调用dlopen的可执行文件则不是. 一旦我将可执行文件链接到pthread或库本身,一切正常.但是,我们使用的是基于插件的基础结构,在该基础结构中,我们不知道应用程序本身是否与pthread链接在一
..
特别是: 是否可以确保glibc 2.x的所有版本都是二进制兼容的? 如果没有,如何在已为其他版本编译的系统上运行二进制文件(游戏)?我可以在其他文件夹中安装glibc吗? 我的具体问题是glibc 2.14(我拥有的)和2.15(游戏想要的)之间的兼容性. 我也许还会得到glibc 2.13的版本,但是我不确定该版本是否可以在2.14上运行. 解决方案 通常,为较
..
我遇到有关glibc的以下错误. ./simulator: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./simulator) 我已经阅读了有关此错误的多个文档,并且我了解到程序simulator是使用glibc的更高版本编译的,并且正在运行的计算机具有较低的版本. simulator是在Ubuntu 14
..
此代码的输出打印为“成功". printf("%m\n"); 解决方案 m转换说明符不是C,而是对printf的GNU扩展: 来自GNU文档: http://www.gnu.org/软件/libc/manual/html_node/Other-Output-Conversions.html “%m"转换会打印与errno中的错误代码相对应的字符串.请参阅错误消息.因此
..
gnulib 解决方案 glibc是核心的C运行时库.它提供了printf(3)和fopen(3)之类的东西. glib是用C编写的基于对象的事件循环和实用程序库. gnulib是一个提供从POSIX API到本机API的适配器的库. 这三个都用于完全不同的任务.
..
我需要使用glibc(2.18)的自编译版本,比系统上的默认版本(2.15)更新.我可以编译和链接C ++程序,但是当我尝试运行它时,出现关于libstdc++.so.6的错误. (C程序似乎可以正常工作.)是否需要针对较新的glibc重新编译gcc才能使其正常工作?为什么? (更新:我已经弄清楚了这部分,但是在底部还有其他一些问题.) 这是一个示例C ++程序: #include
..
我有这个最小的helloworld,并扩展了ucontext.h: #include #include int main(int argc, char** argv) { printf ("hello world!\n"); return 0; } 它使用gcc-4.9(gcc -c hw.c -Wall)进行编译而不会发出警告.
..
我对这些库有些困惑.我现在正在使用Ubuntu,我使用的是g ++ 5,我看到我的应用程序链接在libc.so中.它是Ubuntu的C标准库实现吗?与glibc不同吗? $ ldd application.exe ... libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 ... 解决方案 当前Ubuntu将glibc用于C标准库实现.原始程序包称
..
我试图找到在GCC的源代码中定义__builtin_va_start的位置,并查看其实现方式. (我一直在寻找va_start的定义位置,然后发现该宏定义为__builtin_va_start.)我在GCC 9.1的源代码目录中使用cscope -r来搜索该定义,但没有找到它.谁能指出该函数的定义位置? 解决方案 在任何地方 均未定义__builtin_va_start.它是内置的GCC编
..
是否存在有关binutils,glibc和GCC之间的版本兼容性的官方文档?我发现此矩阵用于binutils与GCC版本的兼容性.对于GCC和glibc,最好也有这样的东西. 我要问的要点是,我需要知道是否可以构建具有“嵌入式" glibc 2.2.4的GCC 4.9.2,以便能够支持相当老的目标,例如CentOS 5. /p> 谢谢. 解决方案 使用这种新版本的gcc构建这种旧版
..
出于某种原因,我想对glibc的strlen函数进行基准测试,发现在GCC中启用了优化功能后,它的执行速度显然比 慢得多. 这是我的代码: #include #include #include #include int main() { char *s = calloc(1
..
将代码(粘贴到下面)提交给在线gcc编译器时,出现以下错误消息. *检测到glibc /run-1326102706-2046832693/solution:两次释放或损坏(!prev):0x091901a8 * * ======= 代码如下: # include # include # include # include
..
我已经实现了到FDK-AAC的JNA桥.可以在此处 中找到源代码. 在对我的代码进行基准测试时,我可以在同一输入上获得数百次成功运行,然后偶尔发生C级崩溃,这将终止整个过程,并导致生成核心转储: 看着核心转储,它看起来像这样: #1 0x00007f3e92e00f5d in __GI_abort () at abort.c:90 #2 0x00007f3e92e4928d i
..
根据Oracle的《多线程编程指南》 ,fork()应该在信号处理程序中可以安全使用.但是我的进程陷入了信号处理程序的内部,并跟踪以下回溯: #0 __lll_lock_wait_private () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:95 #1 0x00007f86e6a9990d in _L_lo
..