Hi all: I am confused when exec file ldconfig and ldd ldconfig on CentOS 8(glibc-2.28): # which ldconfig /usr/sbin/ldconfig # file /usr/sbin/ldconfig /usr/sbin/ldconfig: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, for GNU/Linux 3.2.0, BuildID[sha1]=90ddd9a3e194fb2ec4edd5184d9fca4df45af636, not stripped # ldd /usr/sbin/ldconfig statically linked So ldconfig is dynamiclly linked or statically linked? I lookup elf/Makefile: ifeq (yes,$(use-ldconfig)) ifeq (yes,$(build-shared)) others-static += ldconfig others += ldconfig install-rootsbin += ldconfig I think ldconfig may be statically linked, and can ldconfig be only statically linked?
* Lv Ying via Libc-help: > So ldconfig is dynamiclly linked or statically linked? Usually, glibc ldconfig is statically linked. The output of the file tool is notoriously unreliable. > I think ldconfig may be statically linked, and can ldconfig be only > statically linked? It's technically possible to link it dynamically, with a few makefile changes, but we don't do that, to make it easier to recover from certain failure scenarios. Thanks, Florian
On Thu, Sep 1, 2022 at 5:42 AM Lv Ying via Libc-help
<libc-help@sourceware.org> wrote:
> I am confused when exec file ldconfig and ldd ldconfig on CentOS 8(glibc-2.28):
>
> # which ldconfig
> /usr/sbin/ldconfig
> # file /usr/sbin/ldconfig
> /usr/sbin/ldconfig: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, for GNU/Linux 3.2.0, BuildID[sha1]=90ddd9a3e194fb2ec4edd5184d9fca4df45af636, not stripped
ldconfig is a statically linked PIE executable. The file command
tends to claim that PIE executables are shared objects, which is what
you're seeing here.
Sid
On 01/09/22 09:22, Siddhesh Poyarekar via Libc-help wrote:
> On Thu, Sep 1, 2022 at 5:42 AM Lv Ying via Libc-help
> <libc-help@sourceware.org> wrote:
>> I am confused when exec file ldconfig and ldd ldconfig on CentOS 8(glibc-2.28):
>>
>> # which ldconfig
>> /usr/sbin/ldconfig
>> # file /usr/sbin/ldconfig
>> /usr/sbin/ldconfig: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, for GNU/Linux 3.2.0, BuildID[sha1]=90ddd9a3e194fb2ec4edd5184d9fca4df45af636, not stripped
>
> ldconfig is a statically linked PIE executable. The file command
> tends to claim that PIE executables are shared objects, which is what
> you're seeing here.
>
> Sid
I think the issue is the file command, using a more recent one it does show
that ldconfig is a static-pie:
$ file elf/ldconfig
elf/ldconfig: ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux),
static-pie linked, for GNU/Linux 3.2.0, with debug_info, not stripped
$ readelf -l elf/ldconfig | grep INTERP
$