컴파일 시 공유 라이브러리 파일 오류를 해결하는 방법 [닫기]

컴파일 시 공유 라이브러리 파일 오류를 해결하는 방법 [닫기]

Makefile을 사용하여 프로젝트를 컴파일하고 있는데 다음 오류가 발생합니다.

[rahul@wbms-dev wdb]$ make
/orasw/app/oracle/product/client_19c/bin/proc INCLUDE=/orasw/app/oracle/product/client_19c/lib INCLUDE=/home/rahul/newest_wbms_code_071521/src/wut INCLUDE=/home/rahul/newest_wbms_code_071521/src/wbr CODE=ANSI_C LTYPE=NONE IRECLEN=256 SQLCHECK=FULL USERID=wbms/myPassword@myProjb iname=OrganizationModelDB.p
/orasw/app/oracle/product/client_19c/bin/proc: error while loading shared libraries: libclntsh.so.19.1: cannot open shared object file: No such file or directory
make: *** [OrganizationModelDB.c] Error 127

~/.bashrc 파일에 PATH, LD_LIBRARY_PATH 및 ORACLE_HOME을 추가했습니다.

PATH=$PATH:/orasw/app/oracle/product/client_19c/bin
LD_LIBRARY_PATH=/orasw/app/oracle/product/client_19c/lib
export ORACLE_HOME=/orasw/app/oracle/product/client_19c

libclntsh.so.19.1 파일에도 rwx 권한이 필요합니다.

[rahul@wbms-dev ~]$ ls -l /orasw/app/oracle/product/client_19c/lib/ | grep 'libclntsh*'
lrwxrwxrwx. 1 oracle mis        21 Jul  1 08:42 libclntshcore.so -> libclntshcore.so.19.1
-rwxrwxrwx. 1 oracle mis   8040704 Jul  1 08:42 libclntshcore.so.19.1
lrwxrwxrwx. 1 oracle mis        17 Jul  1 08:42 libclntsh.so -> libclntsh.so.19.1
lrwxrwxrwx. 1 oracle mis        12 Jul  1 08:42 libclntsh.so.10.1 -> libclntsh.so
lrwxrwxrwx. 1 oracle mis        12 Jul  1 08:42 libclntsh.so.11.1 -> libclntsh.so
lrwxrwxrwx. 1 oracle mis        12 Jul  1 08:42 libclntsh.so.12.1 -> libclntsh.so
lrwxrwxrwx. 1 oracle mis        12 Jul  1 08:42 libclntsh.so.18.1 -> libclntsh.so
-rwxrwxrwx. 1 oracle mis  79942576 Jul  1 08:42 libclntsh.so.19.1

오류의 의미와 해결 방법을 이해할 수 없습니다. 도와주세요.

답변1

문제는 파일에 설정한 쉘 변수가 내보내지지 않는다는 LD_LIBRARY_PATH것 입니다 . ~/.bashrc내보내지지 않으므로 링커에서는 이를 볼 수 없습니다.

변수를 내보내려면(실행하는 다른 명령에서 볼 수 있는 환경 변수를 생성함) 다음 명령을 사용하십시오 export.

export LD_LIBRARY_PATH

변수 와 마찬가지로 변수를 설정하는 동안 내보낼 수도 있습니다 ORACLE_HOME. 실제로 $ORACLE_HOME다음과 같이 값을 사용하여 세 줄의 변수 할당을 작성할 수 있습니다.

export ORACLE_HOME=/orasw/app/oracle/product/client_19c
export LD_LIBRARY_PATH="$ORACLE_HOME/lib"
PATH=$PATH:$ORACLE_HOME/bin

이렇게 하면 최신 버전의 Oracle 도구로 업데이트할 때마다 중복되는 양과 값을 변경해야 하는 위치의 수가 줄어듭니다.

PATH변수는 이미 환경 변수이므로 내보낼 필요가 없습니다.

관련 정보