我正在尝试修改 64 位 Ubuntu 机器上的 libc6(2.15-0ubuntu20.2) 中提供的动态链接器。
所以目前我的代码正在使用相同版本的 glibc 库。(我已经下载了相同的源代码并正在研究它)。我的问题是,是否可以只修改和构建目录中存在的链接器源代码,glibc\elf\
而无需构建整个 glibc 库。
如果可能的话,我怎样才能让我的测试程序使用我自己构建的新版本的动态链接器来切换,而不是使用默认的未修改链接器。
任何指示或建议都将受到高度赞赏。(如果需要更多信息,请告诉我)
编辑:: @constantius
我按照您链接的帖子中的步骤构建 ld.so。但是我在制作时遇到了以下错误,我检查了 ld.so 在精灵中不存在。错误是::
/var/services/homes/abhi/test/ld/eglibc-build/elf/librtld.os: In function `generic_getcwd':
/var/services/homes/abhi/test/ld/eglibc-2.15/elf/../sysdeps/posix/getcwd.c:356: undefined reference to `__closedir'
/var/services/homes/abhi/test/ld/eglibc-2.15/elf/../sysdeps/posix/getcwd.c:368: undefined reference to `__fdopendir'
/var/services/homes/abhi/test/ld/eglibc-2.15/elf/../sysdeps/posix/getcwd.c:384: undefined reference to `__readdir'
/var/services/homes/abhi/test/ld/eglibc-2.15/elf/../sysdeps/posix/getcwd.c:397: undefined reference to `rewinddir'
/var/services/homes/abhi/test/ld/eglibc-2.15/elf/../sysdeps/posix/getcwd.c:528: undefined reference to `__closedir'
/var/services/homes/abhi/test/ld/eglibc-2.15/elf/../sysdeps/posix/getcwd.c:490: undefined reference to `__closedir'
collect2: error: ld returned 1 exit status
make[2]: *** [/var/services/homes/abhi/test/ld/eglibc-build/elf/ld.so] Error 1
make[2]: Leaving directory `/var/services/homes/abhi/test/ld/eglibc-2.15/elf'
make[1]: *** [elf/subdir_lib] Error 2
make[1]: Leaving directory `/var/services/homes/abhi/test/ld/eglibc-2.15'
make: *** [all] Error 2
注意使用相同的基础架构,我可以构建和安装完整的 GLIBC,所以我认为基础架构没有错误。- 我猜这个错误与将 Makeconfig 编辑为 all-subdirs = csu elf gmon io misc posix setjmp signal stdlib string time 有关。--关于这个的任何建议..
已解决 除了我们之前编辑的内容外,还需要在所有子目录列表中添加 dirent
谢谢