相关疑难解决方法(0)

单个主机上有多个glibc库

单个主机上有多个glibc库

我的linux(SLES-8)服务器目前有glibc-2.2.5-235,但我有一个程序无法在这个版本上运行,需要glibc-2.3.3.

是否可以在同一主机上安装多个glibc?

这是我在旧glibc上运行程序时遇到的错误:

./myapp: /lib/i686/libc.so.6: version `GLIBC_2.3' not found (required by ./myapp)
./myapp: /lib/i686/libpthread.so.0: version `GLIBC_2.3.2' not found (required by ./myapp)
./myapp: /lib/i686/libc.so.6: version `GLIBC_2.3' not found (required by ./libxerces-c.so.27)
./myapp: /lib/ld-linux.so.2: version `GLIBC_2.3' not found (required by ./libstdc++.so.6)
./myapp: /lib/i686/libc.so.6: version `GLIBC_2.3' not found (required by ./libstdc++.so.6)
Run Code Online (Sandbox Code Playgroud)

所以我创建了一个名为newglibc的新目录,并将以下文件复制到:

libpthread.so.0
libm.so.6
libc.so.6
ld-2.3.3.so
ld-linux.so.2 -> ld-2.3.3.so
Run Code Online (Sandbox Code Playgroud)

export LD_LIBRARY_PATH=newglibc:$LD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误:

./myapp: /lib/ld-linux.so.2: version `GLIBC_PRIVATE' not found (required by ./newglibc/libpthread.so.0)
./myapp: /lib/ld-linux.so.2: version `GLIBC_2.3' not found (required by libstdc++.so.6)
./myapp: …
Run Code Online (Sandbox Code Playgroud)

linux gcc glibc

155
推荐指数
7
解决办法
15万
查看次数

如何在普通C中启动线程?

我在C中使用了fork()来启动另一个进程.如何开始新线程?

c multithreading

49
推荐指数
5
解决办法
7万
查看次数

GCC 4.8中的<stdatomic.h>?

我想利用C11标准提供的新原子操作.但是,尝试#include使用适当的头文件可以为我提供:

 csort-par.c:5:23: fatal error: stdatomic.h: No such file or directory
 #include <stdatomic.h>
Run Code Online (Sandbox Code Playgroud)

在文档http://gcc.gnu.org/wiki/C11Status似乎是说,头文件已经提供自GCC 4.7 ...我这么想吗?__STDC_NO_ATOMICS__没有定义.

gcc --version 如下:

gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
Copyright (C) 2013 Free Software Foundation, Inc.
Run Code Online (Sandbox Code Playgroud)

我确认__STDC_NO_ATOMICS__没有定义如下:

#ifdef __STDC_NO_ATOMICS__
#error yes
#else
#error no
#endif
Run Code Online (Sandbox Code Playgroud)

收益率:

csort-par.c:10:2: error: #error no
 #error no
Run Code Online (Sandbox Code Playgroud)

编辑:感谢您的快速回复.

如果有人在谷歌遇到同样的问题而绊倒了这个问题,那么在此期间需要修复,直到他们发布GCC 4.9:

UNIX便携式原子操作

c multithreading gcc atomic c11

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

pthreads:如果我从两个不同的线程增加一个全局,是否会出现同步问题?

假设我有两个线程A和B都递增一个~global~variable"count".每个线程像这样运行一个for循环:

for(int i=0; i<1000; i++)
    count++; //alternatively, count = count + 1;
Run Code Online (Sandbox Code Playgroud)

即每个线程增量计数1000次,并且假设计数从0开始.在这种情况下是否会出现同步问题?或者在执行完成后计数正确等于2000?我想因为语句"count = count + 1"可能会分解成两个汇编指令,所以在这两个指令之间有可能交换另一个线程吗?不确定.你怎么看?

multithreading pthreads

4
推荐指数
3
解决办法
7546
查看次数

标签 统计

multithreading ×3

c ×2

gcc ×2

atomic ×1

c11 ×1

glibc ×1

linux ×1

pthreads ×1