tag:blogger.com,1999:blog-4982215793068879977.post2772075017056666916..comments2023-09-07T02:56:05.540+08:00Comments on fcamel 技術隨手記: ld, ld.so 和 ldconfig 的行為fcamelhttp://www.blogger.com/profile/04792244455260595133noreply@blogger.comBlogger5125tag:blogger.com,1999:blog-4982215793068879977.post-55407043498017514412015-09-05T23:53:33.343+08:002015-09-05T23:53:33.343+08:00原來如此, 難怪 Mac OS X 下沒有這些東西, 用起來不太習慣, 又懶得再學一套 Mac OS...原來如此, 難怪 Mac OS X 下沒有這些東西, 用起來不太習慣, 又懶得再學一套 Mac OS X 怎麼作這些事<br /><br />我直接複製貼上你的留言到內文裡好了 XDfcamelhttps://www.blogger.com/profile/04792244455260595133noreply@blogger.comtag:blogger.com,1999:blog-4982215793068879977.post-65470123944610791562015-09-05T00:45:44.732+08:002015-09-05T00:45:44.732+08:00> ld-2.21.so, ldd, ldconfig 屬於 glibc 是什麼意思啊? 我以...> ld-2.21.so, ldd, ldconfig 屬於 glibc 是什麼意思啊? 我以為 glibc 是 standard C + POSIX lib<br /><br />Linux 下動態連結器是 C Library 的一部分,例如 Android 不用 GLIBC 所以其 Dynamic Linker (/system/bin/linker64) 是 Google 自己寫出來、自己維護的 https://github.com/android/platform_bionic/blob/master/linker/Android.mk。<br /><br />這個知識可用來解釋 Android 動態連結器有許多「特異功能」,例如有註冊 SIGSEGV handler,所以 native code 記憶體存取錯誤會有 backtrace 等。 https://github.com/android/platform_bionic/blob/master/linker/debugger.cpp<br /><br />至於動態連結器為何是 C Library 的一部分,從「實作 C library 的人」的角度看:凡不是 Kernel,但又是系統「執行期間」需要的低階 Library,就擺在 C Library 內了。<br /><br />ldd 與 ldconfig 是 GLIBC 作者寫出 ld-2.21.so 動態連結器時「順便」寫的工具,是隨 GLIBC 一起安裝的。系統不用 GLIBC 的話,可能沒有 ldd 與 ldconfig。<br /><br />> 怎麼會忽然想到要來回這篇啊?<br /><br />FB 上有位朋友貼你這篇,我就重讀了一次。Anonymoushttps://www.blogger.com/profile/18195653023013629876noreply@blogger.comtag:blogger.com,1999:blog-4982215793068879977.post-35983617379863315602015-09-04T23:57:12.968+08:002015-09-04T23:57:12.968+08:001. 修正 ld.bfs 了
2. ld-2.21.so, ldd, ldconfig 屬於 gl...1. 修正 ld.bfs 了<br /><br />2. ld-2.21.so, ldd, ldconfig 屬於 glibc 是什麼意思啊? 我以為 glibc 是 standard C lib + POSIX C lib (ref. http://stackoverflow.com/a/11461093/278456 )<br /><br />怎麼會忽然想到要來回這篇啊?fcamelhttps://www.blogger.com/profile/04792244455260595133noreply@blogger.comtag:blogger.com,1999:blog-4982215793068879977.post-41046747943523265502015-09-04T22:49:10.766+08:002015-09-04T22:49:10.766+08:001. 有一處 ld.bfd 誤拼成 "ld.bfs" 了
2. 可加一節總結,...1. 有一處 ld.bfd 誤拼成 "ld.bfs" 了<br /><br />2. 可加一節總結,註明靜態連結器 ld{,.bfd,.gold} 屬於 binutils,而動態連結器 /lib64/ld-2.21.so 與相關的 ldd、ldconfig 等屬於 glibc。 Android 不用 glibc 所以後者不同。<br /><br />3. C library 不是用 glibc 所以沒有 ldd 可用時,用 "readelf -d XXX.so | grep NEEDED" 取代<br /><br />Anonymoushttps://www.blogger.com/profile/18195653023013629876noreply@blogger.comtag:blogger.com,1999:blog-4982215793068879977.post-1092413111927085412012-01-29T07:36:19.646+08:002012-01-29T07:36:19.646+08:00soname 要在link的時候自己指定!
除非你用的是libtool, 他就自己幫你處理了,
但你...soname 要在link的時候自己指定!<br />除非你用的是libtool, 他就自己幫你處理了,<br />但你要給他major, minor versionAnonymoushttps://www.blogger.com/profile/01767428090010460014noreply@blogger.com