标签: glibc

glibc 编译错误:错误:'__EI___errno_location' 指定的属性限制少于其目标'

帮我找出我尝试编译 glibc 2.24 时出现的错误,但出现以下错误:

 ./../include/libc-symbols.h:413:26: error: '__EI___errno_location' specifies less restrictive attributes than its target '__errno_location': 'const', 'nothrow' [-Werror=missing-attributes]
|   413 |   extern __typeof (name) __EI_##name \
|       |                          ^~~~~
| ./../include/libc-symbols.h:417:29: note: in expansion of macro '__hidden_ver1'
|   417 | #  define hidden_def(name)  __hidden_ver1(__GI_##name, name, name);
|       |                             ^~~~~~~~~~~~~
| ./../include/libc-symbols.h:468:32: note: in expansion of macro 'hidden_def'
|   468 | # define libc_hidden_def(name) hidden_def (name)
|       |                                ^~~~~~~~~~
| errno-loc.c:28:1: note: in expansion of macro 'libc_hidden_def'
|    28 | libc_hidden_def …
Run Code Online (Sandbox Code Playgroud)

c gcc glibc pragma

1
推荐指数
1
解决办法
2047
查看次数

-ffast-math 的奇怪 LTO 行为

概括

最近我遇到了一个关于 LTO 的奇怪问题,根据是否使用,-ffast-math我的“pow”(in)调用得到了不一致的结果。cmath-flto

环境:

$ g++ --version
g++ (GCC) 8.3.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ ll /lib64/libc.so.6
lrwxrwxrwx 1 root root 12 Sep  3  2019 /lib64/libc.so.6 -> libc-2.17.so

$ ll /lib64/libm.so.6
lrwxrwxrwx 1 root root 12 Sep  3  2019 /lib64/libm.so.6 -> libm-2.17.so

$ cat /etc/redhat-release 
CentOS Linux release …
Run Code Online (Sandbox Code Playgroud)

c++ glibc g++ lto fast-math

1
推荐指数
1
解决办法
139
查看次数

关于malloc和免费的线程安全

可能重复:
Malloc线程安全吗?

我听说glibc malloc()不是线程安全的,因为同时调用malloc()的进程的几个线程将导致未定义的行为.我的问题是如果一个线程调用free()将另一个线程调用malloc(),这是否会导致未定义的行为?

c malloc multithreading glibc

0
推荐指数
1
解决办法
1万
查看次数

错误消息:***glibc检测到***./cube:双重免费或损坏(!prev):0x0a4c4420***

在以下代码中我收到一个错误:

333         glGenBuffers(surftotal, uiVBO);
334         {
335                 for(surfnum=0; surfnum<surftotal; ++surfnum)
336                 {
337                         glBindBuffer(GL_ARRAY_BUFFER, uiVBO[surfnum]);
338                         size_t buf_size = 9*sizeof(GLfloat)*triNum[surfnum];
339                         GLfloat* const pData = (GLfloat*)malloc(buf_size);
340                         for(i=0; i<triNum[surfnum]; ++i)
341                                 printf("%d...",triNum[surfnum]);
342                                 {
343                                 memcpy(pData+i*9,   triArray[surfnum][i].pt1, 3*sizeof(GLfloat));
344                                 memcpy(pData+i*9+3, triArray[surfnum][i].pt2, 3*sizeof(GLfloat));
345                                 memcpy(pData+i*9+6, triArray[surfnum][i].pt3, 3*sizeof(GLfloat));
346                                 }
347                                 glBufferData(GL_ARRAY_BUFFER, buf_size, pData, GL_STATIC_DRAW);
348                                 free(pData);
349                 }
350                 glBindBuffer(GL_ARRAY_BUFFER, 0);
351                 glEnableVertexAttribArray(VERTEX_ARRAY);
352                 for(surfnum=0; surfnum<surftotal; ++surfnum)
353                 {
354                         glBindBuffer(GL_ARRAY_BUFFER, uiVBO[surfnum]);
355                         glVertexAttribPointer(VERTEX_ARRAY, 3, GL_FLOAT, GL_FALSE, 0, 0);
356                         glDrawArrays(GL_TRIANGLES, …
Run Code Online (Sandbox Code Playgroud)

c memory valgrind glibc opengl-es

0
推荐指数
1
解决办法
1744
查看次数

读取套接字中的缓冲区

如果read()的返回值与缓冲区大小相同,我该如何阅读其余信息?如果再次调用read,它会读取下一个数据块,还是从头开始读取,还是未读入缓冲区的信息永久丢失?

c sockets glibc

0
推荐指数
1
解决办法
106
查看次数

分段错误 - 不同的glib-c版本可以做类似的事吗?

我在内存分配/释放方面遇到了一些麻烦.

在"64位机器"上,我运行了一些没有错误的c代码.如果我在32位机器上运行相同的代码(重新编译后,obv.)我有一些分段故障的麻烦.

这是我的glib-c版本:

包:libc6
新增:是状态:已安装自动安装:无版本:2.13-20ubuntu5优先级:必需部分:libs维护者:Ubuntu开发人员未压缩大小:10,7 M取决于:libc-bin(= 2.13-20ubuntu5),libgcc1,tzdata建议:glibc-doc,debconf | debconf-2.0,locales冲突:belocs-locales-bin,belocs-locales-bin,libc6-amd64,libc6-amd64,prelink(<0.0.20090925),prelink(<0.0.20090925),tzdata(<2007k-1) ,tzdata(<2007k-1),tzdata-etch,tzdata-etch中断:nscd(<2.13),nscd(<2.13),libc6(!= 2.13-20ubuntu5)替换:belocs-locales-bin,belocs-locales- bin,libc6-amd64,libc6-amd64,libc6(<2.13-20ubuntu5)提供:glibc-2.13-1描述:libreria C GNU嵌入式:librerie condivise

在32位机器上,版本是:

2.06-01

更重要的是,这里有一些令我疯狂的代码片段:

void estrai_libro (FILE* fileDescriptor, Libro* libroLetto) {

char* ptr_buf;
size_t n;
size_t lung;
ssize_t nread;

/* ---- questo blocco di istruzioni verrà utilizzato per tutti
    i campi della struttura Libro passata in input */
/* inizializzo ptr_buf e n rispettivamente a NULL e a 0 in moda da
   da sfruttare al meglio la getline(...)*/     
ptr_buf = NULL;
n = 0;
/* copio …
Run Code Online (Sandbox Code Playgroud)

c glibc segmentation-fault

0
推荐指数
1
解决办法
489
查看次数

显式调用析构函数时的c ++内存错误("双重释放或损坏")

我有" *glibc检测到/ home/ubuntu [....]:双免费或腐败(fasttop):0x09851168**"问题.

调试我找出了似乎是问题根源的那一行:

data[i]->~Class();
Run Code Online (Sandbox Code Playgroud)

这是指

 class Class {
public:
    Class();
    Class(char *name, double value);
    virtual ~Class();
    char *name;
    double value;
private:

};
Run Code Online (Sandbox Code Playgroud)

然后

    Class::Class() {
}

Class::Class(char* name, double value){
    this->name = new char[std::strlen(name)];
    std::strcpy(this->name, name);
    this->value = value;
}

Class::~Class() {
    delete name;
}
Run Code Online (Sandbox Code Playgroud)

现在,显然我在那里做错了什么.任何人都可以告诉我什么?

c++ memory glibc

0
推荐指数
1
解决办法
1283
查看次数

***glibc检测到***./m:free():尝试释放堆内存时无效的下一个大小(快)

我有一个小代码,它在堆上分配一些内存,然后在它使用后尝试释放它.我在内存映射中遇到此错误.

守则是::

void merge(int *arr, int start, int mid, int end)
{
     int i = 0, j = 0, k = 0, tmp1 = 0, siz = 0;
     int *pt = NULL;
     j = start, k = mid+1, tmp1 = start;

     siz = (end - start) + 1;

     if ((pt = malloc(siz * sizeof(int))) == NULL) /* line 32 */
     {
         printf("\n ERROR Aloocating mem \n");
         return;
     }

     while (j <= mid && k <= end)
     {
        if (arr[j] <= …
Run Code Online (Sandbox Code Playgroud)

c linux free memory-management glibc

0
推荐指数
1
解决办法
7564
查看次数

在C中取消定义类似函数的宏?

我试图对glibc做一些破解,我想知道是否有可能重新定义类似函数的宏?

例如,<tgmath.h>有以下宏:

#define expm1(Val) __TGMATH_UNARY_REAL_ONLY (Val, expm1)
Run Code Online (Sandbox Code Playgroud)

如何重新定义expm1为:

#define expm1(Val) __TGMATH_UNARY_REAL_IMAG (Val, expm1, cexpm1)
Run Code Online (Sandbox Code Playgroud)

我想我必须取消之前的定义,但我不知道该怎么做.

c macros glibc c-preprocessor

0
推荐指数
1
解决办法
1999
查看次数

在glibc中找不到iso646.h

我下载了几个版本,glibc即2.18,2.19,2.20,2.23,我试图找到该文件iso646.h但找不到它.我认为它是glibc的标准部分所以它应该在那里.任何人都知道它为什么不存在?

但是,我在/ usr/lib/gcc目录中的本地机器上找到了它.所以我假设它是用gcc安装的.但我仍然不知道为什么我不能在glibc来源中找到它.我正在粘贴我在下面找到的内容:

/* Copyright (C) 1997-2014 Free Software Foundation, Inc.

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.

GCC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY …
Run Code Online (Sandbox Code Playgroud)

c gcc glibc

0
推荐指数
1
解决办法
124
查看次数