我在这里有一个问题,关于如何在不同的机器上使用新建的GLIBC。
我更改了malloc代码并编译了本地版本的glibc 来自:/ home / 1 / glibc / puzzlebox /
Configure:**/eglibc-2.15/configure --prefix=/home/1/glibc/puzzlebox/lib32/ --host=i686-linux-gnu --build=i686-linux-gnu CC="gcc -m32 -g -ggdb -DMALLOC_DEBUG=1 -U__i686" CXX="g++ -m32 -g -ggdb -DMALLOC_DEBUG=1 -U __i686" CFLAGS="-O2 -march=i686 -U_FORTIFY_SOURCE -fno-stack-protector" CXXFLAGS="-O2 -march=i686 -U_FORTIFY_SOURCE -fno-stack-protector"
Make and install**: make clean;make;make install
由于我的前缀是/ home / 1 / glibc / puzzlebox / lib32 /,因此在/ home / 1 / glibc / puzzlebox / lib32 /
下创建了以下目录bin等包含lib libexec sbin share
现在我将库文件/ home / 1 / glibc / puzzlebox / lib32 / lib / *复制到另一个存储库/ home / 2 / glibc / puzzlebox / lib32 / lib
并指出我的gcc使用/ home / 2 / glibc / puzzlebox / lib32 / lib / *文件中的库文件
但是从
编译时出现以下错误ld: cannot find /home/1/glibc/puzzlebox/lib32/lib/libc.so.6 inside
ld: cannot find /home/1/glibc/puzzlebox/lib32/lib/libc_nonshared.a inside
ld: cannot find /home/1/glibc/puzzlebox/lib32/lib/ld-linux.so.2 inside
collect2: error: ld returned 1 exit status
我是/ home / 2存储库上的compilicc,但我的glibc需要/home/1/glibc/puzzlebox/lib32/lib/libc.so.6
这是因为静态链接吗?怎么能克服这个?我如何构建一个可以在存储库之间使用而不需要在每个存储库中重建的glibc?我不想覆盖已经存在的glibc,所以我使用前缀作为/ usr
请建议!!提前致谢!!
答案 0 :(得分:1)
这是因为静态链接吗?
没有。最可能的原因是fleet.vehicle
(链接器脚本,即文本文件)中包含/home/2/glibc/puzzlebox/lib32/lib/libc.so
等。
您可以编辑该文件,但实际上您应该不使用/home/1/glibc/puzzlebox/lib32/lib/libc.so.6
编译GLIBC,除非是您打算安装它的地方。