相关疑难解决方法(0)

libc_nonshared.a 的目的是什么?

为什么libc_nonshared.a存在?它的目的是什么?我一直无法在网上找到关于它存在的好答案。

据我可以告诉它提供了某些符号(statlstatfstatatexit,等等)。如果有人在他们的代码中使用这些函数之一,它将被链接到这个存档中的最终可执行文件。这些函数是 POSIX 标准的一部分并且非常常见,所以我不明白为什么它们不会分别放在 shared 或 staticlibc.so.6或 中libc.a

c glibc libc

23
推荐指数
2
解决办法
1147
查看次数

转到不同的Linux构建系统,获取错误:undefined symbol:stat

这可能只是我迁移到的构建系统的一个问题,但我将在两个系统中包含差异以及我是如何遇到问题的.

我的旧构建系统是SLES 10机器.gcc/cpp/g ++版本是4.1.0

我的新系统在SLES 11 SP4上,gcc/cpp/g ++版本是4.3.4.

我正在建立一个共享库; 建立和连接新系统的工作正常.但是,在新系统的加载时,我得到以下内容:

error ./mysharedlib.so: undefined symbol: stat
Run Code Online (Sandbox Code Playgroud)

由于stat()函数包含在/usr/include/sys/stat.h中,因此我查看了两个系统上的glibc.旧:

# rpm -q -f /usr/include/sys/stat.h
glibc-devel-2.4-31.2
Run Code Online (Sandbox Code Playgroud)

新的:

# rpm -q -f /usr/include/sys/stat.h
glibc-devel-2.11.3-17.95.2
Run Code Online (Sandbox Code Playgroud)

我还查看了旧系统上与stat()相关的objdump输出:

# objdump -T mysharedlib.so | grep stat
0000000000000000      D  *UND*  0000000000000000              __xstat

# objdump -x mysharedlib.so | grep stat
00000000000e3f8a l     F .text  0000000000000024              stat
0000000000000000         *UND*  0000000000000000              __xstat
Run Code Online (Sandbox Code Playgroud)

而新系统:

# objdump -T mysharedlib.so | grep stat
0000000000000000      D  *UND*  0000000000000000              stat
0000000000000000      D  *UND*  0000000000000000              lstat
# …
Run Code Online (Sandbox Code Playgroud)

c linux gcc glibc libc

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

标签 统计

c ×2

glibc ×2

libc ×2

gcc ×1

linux ×1