Linux 可执行文件上缺少动态库,但仅在以sudo方式运行时

Linux 可执行文件上缺少动态库,但仅在以sudo方式运行时,linux,shared-libraries,Linux,Shared Libraries,我很困惑为什么libiconv.so.2和libcharset.so.1都找不到,但只有在我向其他用户查询时才找到。LD_LIBRARY_路径完全相同,因为我使用-E运行sudo: $ ldd `which git` linux-vdso.so.1 => (0x00007fff51975000) libz.so.1 => /usr/lib64/libz.so.1 (0x0000003e60600000) libiconv.so.2 => /intern

我很困惑为什么
libiconv.so.2
libcharset.so.1
都找不到,但只有在我向其他用户查询时才找到。LD_LIBRARY_路径完全相同,因为我使用-E运行sudo:

$ ldd `which git`
    linux-vdso.so.1 =>  (0x00007fff51975000)
    libz.so.1 => /usr/lib64/libz.so.1 (0x0000003e60600000)
    libiconv.so.2 => /internal/lib/libiconv.so.2 (0x00007f0962bdd000)
    libcrypto.so.6 => /lib64/libcrypto.so.6 (0x0000003e6a400000)
    libcharset.so.1 => /internal/lib/libcharset.so.1 (0x00007f09629db000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003e61600000)
    libc.so.6 => /lib64/libc.so.6 (0x0000003e60a00000)
    libdl.so.2 => /lib64/libdl.so.2 (0x0000003e61200000)
    /lib64/ld-linux-x86-64.so.2 (0x0000003e60200000)
$ sudo -ucgaadm -EH ldd `which git`
    linux-vdso.so.1 =>  (0x00007fff5b148000)
    libz.so.1 => /usr/lib64/libz.so.1 (0x0000003e60600000)
    libiconv.so.2 => not found
    libcrypto.so.6 => /lib64/libcrypto.so.6 (0x0000003e6a400000)
    libcharset.so.1 => not found
    libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003e61600000)
    libc.so.6 => /lib64/libc.so.6 (0x0000003e60a00000)
    libdl.so.2 => /lib64/libdl.so.2 (0x0000003e61200000)
    /lib64/ld-linux-x86-64.so.2 (0x0000003e60200000)
只需查看LD_LIBRARY_路径,它似乎就是libiconv的路径。因此.2确实存在:

$ echo $LD_LIBRARY_PATH
...
$ sudo -ucgaadm -EH echo $LD_LIBRARY_PATH
... same output as previous command ...
应该包含这些库的目录也可以从我的常规使用以及sudo用户中看到:

$ ls /internal/lib/ -lah
total 2.5M
drwxr-xr-x 2 apsg apsggrp 4.0K Jan 31  2010 .
drwxr-xr-x 6 apsg apsggrp 4.0K Jan 31  2010 ..
-rw-r--r-- 1 apsg apsggrp  212 Jan 31  2010 charset.alias
-rw-r--r-- 1 apsg apsggrp  24K Jan 31  2010 libcharset.a
-rw-r--r-- 1 apsg apsggrp  993 Jan 31  2010 libcharset.la
lrwxrwxrwx 1 apsg apsggrp   19 Jan 31  2010 libcharset.so -> libcharset.so.1.0.0
lrwxrwxrwx 1 apsg apsggrp   19 Jan 31  2010 libcharset.so.1 -> libcharset.so.1.0.0
-rw-r--r-- 1 apsg apsggrp  24K Jan 31  2010 libcharset.so.1.0.0
-rw-r--r-- 1 apsg apsggrp  969 Jan 31  2010 libiconv.la
lrwxrwxrwx 1 apsg apsggrp   17 Jan 31  2010 libiconv.so -> libiconv.so.2.5.0
lrwxrwxrwx 1 apsg apsggrp   17 Jan 31  2010 libiconv.so.2 -> libiconv.so.2.5.0
-rw-r--r-- 1 apsg apsggrp 1.2M Jan 31  2010 libiconv.so.2.5.0
-rw-r--r-- 1 apsg apsggrp 1.2M Jan 31  2010 preloadable_libiconv.so
$ sudo -ucgaadm -EH ls /internal/lib/ -lah
... same output as previous command ...
尝试“sudo su-”,然后运行您的命令
“-”将更改为root用户并创建一个新的shell

也许您需要配置
/etc/ld.so.conf
,然后运行
ldconfig