본문 바로가기

Linux

ls: error while loading shared libraries: librt.so.1: cannot open shared object file: No such file or directory

일반계정으로 접속시 평소에 사용하던 명령어가 되지 않고 다음과 같은 문구를 내보내며 안된다...

 

[oracle@sam ~]$ ls

ls: error while loading shared libraries: librt.so.1: cannot open shared object file: No such file or directory

 

또는 다음과 같은 에러 (명령어에 따라 다른듯)

error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

 

일반계정으로 파일을 수정하려니 안되서 root 로 작업했습니다. 아무튼 어디가 문제인가 확인해보았더니 다음의 정보가 달랐다.

 

계정의 .bash_profile 을 보았더니 이상한게 있었다.

 

export LD_ASSUME_KERNEL=2.4.1

- export LD_ASSUME_KERNEL=2.6.18 로 수정

 

 

이 부분인데.. 커널 버전 참조 하는거같은데... 아무튼 이 값을 수정하고 복구~!

 

[root@sam ~]# uname -a
Linux sam 2.6.18-194.el5 #1 SMP Tue Mar 16 21:52:39 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

 

[ 참고자료 ]

  - LD_ASSUME_KERNEL
                                                                                                 
        LD_ASSUME_KERNEL is an enviroment variable used by the dynamic
        linker to decide what implementation of libraries are used. For
        most cases, the most important lib is the c lib, or "libc" or
        "glibc".
                                                                                                 
        The reason "glibc" is important is because it contains the
        thread implentation for a system.
                                                                                                 
        The values you can set LD_ASSUME_KERNEL to equate to linux
        kernel versions. Since glibc and the kernel are tighly bound,
        it's neccasary for glibc to change it's behaviour based on
        what kernel version is installed.
                                                                                                 
        For properly written apps, there sould be no reason to use
        this setting. However, for some legacy apps that depend
        on a particular thread implementation in glibc, LD_ASSUME_KERNEL
        can be used to force the app to use an older implementation.
                                                                                                 
        The primary targets fore LD_ASSUME_KERNEL=2.4.20 for use
        of the NTPL thread library. LD_ASSUME_KERNEL=2.4.1 use the
        implementation in /lib/i686 (newer LinuxTrheads).
        LD_ASSUME_KERNEL=2.2.5 or older uses the implementation
        in /lib (old LinuxThreads)
                                                                                                 
        For an app that requires the old thread implentation, it
        can be launch as:
                                                                                                 
                LD_ASSUME_KERNEL=2.2.5 ./some-old-app
                                                                                                 
        see http://people.redhat.com/drepper/assumekernel.html for
        more details.
http://www.linuxquestions.org/questions/linux-server-73/bash_profile-help-error-while-loading-shared-libraries-librt-so-1-a-830012/