草庐IT

使用另一个 glibc 构建

我已经安装了另一个版本的GLIBC,并想针对这个新的GLIBC编译Golang代码。我试过下面的动态编译命令:gobuild--ldflags'-linkmodeexternal-L/path/to/another_glibc/但是当我运行ldd"go_executable"时,它仍然显示链接到默认glibc。输出:linux-vdso.so.1=>(0x00007fff29da7000)libc.so.6=>/lib/x86_64-linux-gnu/libc.so.6(0x00007f128a93c000)/lib64/ld-linux-x86-64.so.2(0x00007f12

c - glibc的结构?

由于glibc在你用gcc编译你的程序时会自动链接,所以包括我在内的很多人都不太了解它。所以我的问题是,glibc是由什么组成的。glibc相关的对象、共享对象文件有哪些?它们放在哪个目录中。其次,默认情况下,gcc只使用glibc的共享对象文件还是还需要对象文件?glibc的哪些共享对象是由gcc自动链接的? 最佳答案 glibc是标准C库的GNU实现,具有超出标准的额外功能。Themanual准确告诉您它由什么组成以及如何使用。 关于c-glibc的结构?,我们在StackOverf

复制 glibc 库

我下载了glibc源代码,修改了标准库的某些部分,然后使用LD_PRELOAD将修改后的标准库(以.so文件的形式)用于我的程序。但是,当我将该.so文件复制到另一台计算机并尝试在该计算机上使用LD_PRELOAD运行相同的程序时,出现了段错误。请注意,两台计算机都有x86-64处理器。此外,两台计算机都安装了gcc4.4。尽管未运行它的计算机除了gcc4.4之外还安装了gcc4.1.2。但是,一个运行的是Ubuntu10.04(我在其中编译),而另一个运行的是CentOS5。这是段错误的原因吗?我怎么解决这个问题?请注意,我在装有CentOS5的计算机上没有管理权限。

linux - 在较新的系统上构建较旧的 GLIBC

我有一个问题,我希望这里的一些专家能帮助我:)我的目标很简单:(目标1)在较新的系统上构建一个较旧的glibc,并且(目标2)构建可以在较旧的glibc上运行的旧软件。我在gcc4.9、glibc2.19、amd64系统上。我确实在我的系统上编译了glibc2.14和gcc4.7.3。(约定:/path/to/libc2.14_dir=$LIBC214,/path/to/gcc4.7.3=$GCC473)我正在尝试使用新构建的glibc2.14编译bash4.2.53(以及其他软件coreutil、binutil、qt3.3...)。我的配置和制作看起来像这样:(我在对象/构建目录中)

linux - 在 glibc 源代码中找不到 puts()

我是Linux/C的新手。在我的Linux上的glibc(eglibs-2.15)源代码中,我只能在/libio/stdio.h中找到puts()声明externintputs(__constchar*__s);但在glibc源中的任何地方都找不到puts()的源。我的猜测是puts()是系统相关的,它的来源在其他地方。问题:在哪里可以找到puts()源?此外,在某些系统上,puts()的源代码似乎是可用的,例如在Apple上(http://www.opensource.apple.com/source/Libc/Libc-186/stdio.subproj/puts.c)或NetBS

linux - 对符号 'timer_settime@@GLIBC_2.3.3 的 undefined reference

操作系统:Linux我正在尝试链接mips64-softmmu/qemu-system-mips64但它导致错误:./slirp/misc.o:Infunction`memset':/usr/include/bits/string3.h:81:warning:memsetusedwithconstantzerolengthparameter;thiscouldbeduetotransposedparameters/usr/bin/ld:../qemu-timer.o:undefinedreferencetosymbol'timer_settime@@GLIBC_2.3.3'/usr/b

linux - 构建 glibc 时出错

我正在尝试安装glibc来调试我正在处理的C框架。但是,我在构建过程中遇到错误。这是错误信息:make[3]:Leavingdirectory`/root/glibc-source/glibc-2.14/elf'/usr/bin/install-c/root/glibc-2.14-build/elf/ld.so/usr/local/myglibc/lib/ld-2.14.so.newmv-f/usr/local/myglibc/lib/ld-2.14.so.new/usr/local/myglibc/lib/ld-2.14.so/usr/bin/install-c/root/glibc

linux - 运行此处编译的 C 程序会导致另一台服务器上出现 GLIBC 库未找到错误 - 这是我的错还是他们的错?

这里编译的C程序在我们的Ubuntu服务器上运行良好。但是当其他人试图在他们特定的Linux服务器上运行它时,他们会收到以下错误:./myprog-install:/lib/tls/libc.so.6:version`GLIBC_2.4'notfound(requiredby./myprog-install)./myprog-install:/lib/tls/libc.so.6:version`GLIBC_2.7'notfound(requiredby./myprog-install)我需要升级我们的glibc库并重新编译吗?还是他们的服务器上遗漏了什么?如果我运行apt-caches

linux - Glibc 配置错误

当我在配置Glibc时遇到错误(步骤5.7)时,我正在阅读Linuxfromscratch这本书:checkingforsysdepspreconfigurefragments...aarch64alphaarmconfigure:error:OldABInolongersupported我正在使用:../glibc-2.20/configure\--prefix=/tools\--host=$LFS_TGT\--build=$(../glibc-2.20/scripts/config.guess)\--disable-profile\--enable-kernel=2.6.32\--

c - 使用 gold vs ld 链接器时使用的 glibc/pthreads 的不同符号

我有一个简单的测试程序调用pthread_cond_broadcast。当与ld链接器链接时,这显示:案例一:$nmld-test|grepcond_broadcastUpthread_cond_broadcast@@GLIBC_2.3.2当与gold链接器链接时,它显示:案例二:$nmgold-test|grepcond_broadcastUpthread_cond_broadcastpthread/libc包含几个具有不同版本符号的pthread_cond_broadcast符号,大概是因为ABI已更改。$nm/lib64/libc.so.6|grepcond_broadca000