diary/Kojima

・Glibc-2.3.4

glibc-2.3.4 を --enable-add-ons=linuxthreads でコンパイルしようとすると

pthread.c:550: undefined reference to `_res'
libpthread_pic.a(pthread.os)(.text+0xcea): In function `__pthread_reset_main_thread':
pthread.c:1146: undefined reference to `_errno'
libpthread_pic.a(pthread.os)(.text+0xcf6):/home/kojima/Glibc2/glibc-2.3.4/linuxthreads/pthread.c:1147: 
  undefined reference to `_h_errno'
...

などと言うエラーになる模様.Web 上で調べてみると i686 以上でしか使えな い TLS を要求しているので --without-TLS すれば通るかも,という情報は見 つけたものの,このあたりの設定をいくつか試してもダメな模様.

多分,エラーの原因は,リンクしようとしている(新しく作った) libc.so では

kojima@athlon[~/Glibc2/libc-bin2]% nm libc.so | grep ' _res'
001003a0 B _res@GLIBC_2.0
00101240 B _res_hconf
000b4708 t _res_hconf_init
000b4760 t _res_hconf_reorder_addrs

となっていて _res に @GLIBC_2.0 みたいなバージョン修飾が付いていることだと 思うのだけど,このあたりは glibc2 のかなり奥の方の問題だから,どうすれ ばいいのかは分からないなぁ.ドキュメントを見ても 2.3.4 のスレッド機能 は NPTL がデフォルトで linuxthreads は過去との互換性のために残してある ような書き方なので,待ってれば直るものでも無さげだし.

glibc-2.3.3 までは linuxthreads でもコンパイルできたので,Plamo-4.0.2 ではこっちを使うことにして,2.3.4 は Plamo-4.1 以降で 2.6 カーネル + NPTL で使うようにするかなぁ..



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-17 (金) 16:35:41