64 ビットの Ubuntu マシンで、libc6(2.15-0ubuntu20.2) で提供されている動的リンカーを変更しようとしています。
したがって、現在、私のコードは同じバージョンの glibc ライブラリを使用しています。(私は同じソースコードをダウンロードし、それに取り組んでいます)。私の質問は、glibc ライブラリ全体をビルドせずに、ディレクトリに存在するリンカー ソース コードのみを変更してビルドすることは可能かということです。glibc\elf\
また、可能であれば、変更されていないデフォルトのリンカを使用する代わりに、自分で構築した新しいバージョンのダイナミック リンカを使用してテスト プログラムを切り替える方法を教えてください。
ポインタや提案は大歓迎です。(さらに情報が必要な場合はお知らせください)
編集:: @コンスタンティウス
リンクされた投稿の手順に従って、ld.so をビルドしました。しかし、makeで次のエラーが発生し、ld.soがelfにないことを確認しました。エラーは::
/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 に編集することに関連するエラーだと思います。--これに関する提案は..
解決済み 前に編集したものに加えて、all- subdirs リストに dirent を追加する必要がある
ありがとう