반응형

아래와 같이 길게 에러가 나왔다.

185 줄, 45 열, /usr/include/sys/cdefs.h 파일에 구문 오류입니다:라인 185, 열 45에 /usr/include/sys/cdefs.h 파일에서 오류가 생겼습니다
#define __glibc_fortify(f, __l, __s, __osz, ...) \
............................................1
PCC-S-02014, 심볼 "..."를 만났습니다 다음 중 하나가 기대될 때:
   an identifier, define, elif, else, endif, error, if, ifdef,
   ifndef, include, include_next, line, pragma, undef, exec,
   sql, begin, end, var, type, oracle,
   an immediate preprocessor command, a C token, create,
   function, package, procedure, trigger, or, replace,

187 줄, 9 열, /usr/include/sys/cdefs.h 파일에 구문 오류입니다:라인 187, 열 9에 /usr/include/sys/cdefs.h 파일에서 오류가 생겼습니다
   ? __ ## f ## _alias (__VA_ARGS__)                                          \
........1
PCC-S-02014, 심볼 "##"를 만났습니다 다음 중 하나가 기대될 때:
   ; { } , = : ( ) [ ] * ? | & < > + - / % ~ ! . # @ ^ *= /= %=
   += -= <<= >>= &&= ||= ^= ~= := | & == != <= >= << >> ++ -- ->
   ... .. <> ** => an identifier, a string, a numeric constant,
   a sql string, misc. punctuation, newline, define, elif, else,
   endif, error, if, ifdef, ifndef, include, include_next, line,
   pragma, undef, exec, sql, begin, end, var, type, oracle,
   an immediate preprocessor command, a C token, exec sql,
   exec sql include, exec sql var, exec sql begin, exec sql end,
   end-exec, exec sql type, exec oracle, exec oracle else,
   exec oracle endif, exec oracle begin, a sql hint, create,
   function, package, procedure, trigger, or, replace,
   a C++ token,

201 줄, 2 열, /usr/include/sys/cdefs.h 파일에 구문 오류입니다:라인 201, 열 2에 /usr/include/sys/cdefs.h 파일에서 오류가 생겼습니다
#endif
.1
PCC-S-02014, 심볼 "endif"를 만났습니다 다음 중 하나가 기대될 때:
   a numeric constant, newline, define, error, if, ifdef,
   ifndef, include, include_next, line, pragma, undef,
   an immediate preprocessor command, a C token,

라인 33, 열 10에 /usr/include/stdio.h 파일에서 오류가 생겼습니다
#include <stddef.h>
.........1
PCC-S-02015, 포함하고 있는 파일을 열 수 없습니다
라인 36, 열 10에 /usr/include/stdio.h 파일에서 오류가 생겼습니다
#include <stdarg.h>
.........1
PCC-S-02015, 포함하고 있는 파일을 열 수 없습니다
31 줄, 1 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 31, 열 1에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef unsigned char __u_char;
1
PCC-S-02201, 심볼 "typedef"를 만났습니다 다음 중 하나가 기대될 때:
   ; , = ( [
심볼이 ";" 계속하기 위하여 "typedef"로 치환되었습니다
52 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 52, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __int8_t __int_least8_t;
........1
PCC-S-02201, 심볼 "__int8_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__int8_t"로 치환되었습니다
53 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 53, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __uint8_t __uint_least8_t;
........1
PCC-S-02201, 심볼 "__uint8_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__uint8_t"로 치환되었습니다
54 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 54, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __int16_t __int_least16_t;
........1
PCC-S-02201, 심볼 "__int16_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__int16_t"로 치환되었습니다
55 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 55, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __uint16_t __uint_least16_t;
........1
PCC-S-02201, 심볼 "__uint16_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__uint16_t"로 치환되었습니다
56 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 56, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __int32_t __int_least32_t;
........1
PCC-S-02201, 심볼 "__int32_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__int32_t"로 치환되었습니다
57 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 57, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __uint32_t __uint_least32_t;
........1
PCC-S-02201, 심볼 "__uint32_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__uint32_t"로 치환되었습니다
59 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 59, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __uint64_t __uint_least64_t;
........1
PCC-S-02201, 심볼 "__uint64_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__uint64_t"로 치환되었습니다
203 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 203, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __off64_t __loff_t;     /* Type of file sizes and offsets (LFS).  */
........1
PCC-S-02201, 심볼 "__off64_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__off64_t"로 치환되었습니다
12 줄, 3 열, /usr/include/bits/types/__fpos_t.h 파일에 구문 오류입니다:라인 12, 열 3에 /usr/include/bits/types/__fpos_t.h 파일에서 오류가 생겼습니다
  __off_t __pos;
..1
PCC-S-02201, 심볼 "__off_t"를 만났습니다 다음 중 하나가 기대될 때:
   char, const, double, enum, float, int, long, ulong_varchar,
   OCIBFileLocator OCIBlobLocator, OCIClobLocator, OCIDateTime,
   OCIExtProcContext, OCIInterval, OCIRowid, OCIDate, OCINumber,
   OCIRaw, OCIString, short, signed, sql_context, sql_cursor,
   struct, union, unsigned, utext, uvarchar, varchar, void,
   volatile, a typedef name,

라인 56, 열 12에 /usr/include/stdio.h 파일에서 오류가 생겼습니다
#  include <stdarg.h>
...........1
PCC-S-02015, 포함하고 있는 파일을 열 수 없습니다
라인 33, 열 10에 /usr/include/string.h 파일에서 오류가 생겼습니다
#include <stddef.h>
.........1
PCC-S-02015, 포함하고 있는 파일을 열 수 없습니다
라인 23, 열 10에 /usr/include/strings.h 파일에서 오류가 생겼습니다
#include <stddef.h>
.........1
PCC-S-02015, 포함하고 있는 파일을 열 수 없습니다
0 줄, 0 열, test.pc 파일에 구문 오류입니다:라인 0, 열 0에 test.pc 파일에서 오류가 생겼습니다
PCC-S-02201, 심볼 "<eof>"를 만났습니다 다음 중 하나가 기대될 때:
   ; : an identifier, end-exec, random_terminal

라인 0, 열 0에 test.pc 파일에서 오류가 생겼습니다
PCC-F-02102, C 선행 처리 동안 치명적 오류 발생
make: *** [makefile:9: test] Error 1

 

다른거를 다 차처하고 stdio.h , string.h , strings.h 의 파일을 열수 없다면 보면 된다.

결국 위 헤더들을 찾을 수 없는 것이다.

Pro*C 에서 빌드할때 환경파일인 pcscfg.cfg 파일에 include 하는 무언가가 있는것같았다.

파일을 열어보았다. 

sys_include=($ORACLE_HOME/sdk/include,/usr/include,/usr/lib/gcc/x86_64-redhat-linux/4.1.2/include,/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include,/usr/lib/gcc/x86_64-redhat-linux/4.4.4/include,/usr/lib64/gcc/x86_64-suse-linux/4.8/include)
ltype=short
define=__x86_64__

위와 같이 나와있었다.

sys_include 부분에서 빌드를 할 때 필요한 include 들이 있는 것 같았다.

자세히 들여다보니 gcc의 4.1.2 버전에 해당하는 include 들이여서 못찾는 것 같았다.

필자의 gcc 버전을 확인했다

[abc@test ~]$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/11/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-host-pie --enable-host-bind-now --enable-languages=c,c++,fortran,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.rockylinux.org/ --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-plugin --enable-initfini-array --without-isl --enable-multilib --with-linker-hash-style=gnu --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_64=x86-64-v2 --with-arch_32=x86-64 --build=x86_64-redhat-linux --with-build-config=bootstrap-lto --enable-link-serialization=1
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.4.1 20230605 (Red Hat 11.4.1-2) (GCC)

아무래도 rocky 9 버전이다보니 gcc가 11.4.1 버전이였다.

위에 해당하는 include를 잡아주어야해서 sys_include 의 맨 뒷부분에 11버전의 gcc의 include 경로를 잡아주었다.

#pcscfg.cfg 파일
#맨 끝 부분 /usr/lib/gcc/x86_64-redhat-linux/11/include 추가
sys_include=($ORACLE_HOME/sdk/include,/usr/include,/usr/lib/gcc/x86_64-redhat-linux/4.1.2/include,/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include,/usr/lib/gcc/x86_64-redhat-linux/4.4.4/include,/usr/lib64/gcc/x86_64-suse-linux/4.8/include,/usr/lib/gcc/x86_64-redhat-linux/11/include)

이후 pro*c 를 빌드를 하였더니 정상적으로 작동하였다.

(필자의 경우 다른 에러가 발생... ㅠㅠ)

 

위와 같이 gcc 버전을 주의해서 Pro*c 환경을 셋팅을 해야겠다.

 

참고 : https://smok95.tistory.com/141

 

Pro*C 컴파일오류 : PCC-S-02015, unable to open include file ( stddef.h, stdarg.h )

redhat linux 엔터프라이즈 4 버전에서 proc를 컴파일 하는 과정에서 아래와 비슷한 내용의 에러가 발생했습니다. ---------------------------------------------------------------------------------- make -f /opt/oracle/product/

smok95.tistory.com

 

반응형

'에러 > Oracle' 카테고리의 다른 글

[sqlplus] -bash : event not found  (0) 2024.02.22
[sqlplus] Error 6 initializing SQL*Plus  (0) 2024.02.22
반응형

sqlplus 사용시에 아래와 같은 에러가 났다.

[abc@hostname src]$ sqlplus abc/abc123!@TESTDB
-bash: !@TESTDB: event not found

 

해당 에러는 느낌표 '!' 때문에 일어난다.

bash 쉘에서는 '!' 가 이전에 실행한 히스토리를 실행하는 명령어의 히스토리를 참조하는 역할을 한다.

따라서 해당 에러를 없애기 위해서는 ! 가 문자열이라는 것을 알려줄 필요가 있다.

 

해결방법은 두가지이다.

# 1번 방법
[abc@hostname src]$ sqlplus 'abc/abc123!@TESTDB'

# 2번 방법
[abc@hostname src]$ sqlplus abc/abc123\!@TESTDB

 

그러면 해결이 될것이다.

반응형

'에러 > Oracle' 카테고리의 다른 글

[Oracle Pro*C Error] build error  (0) 2024.03.04
[sqlplus] Error 6 initializing SQL*Plus  (0) 2024.02.22
반응형

OS version : Rocky Linux release 9.3 (Blue Onyx)

 

sqlplus 를 사용하는 도중 나온 에러이다.

[abc@hostname instantclient_12_2]$ ./sqlplus 
Error 6 initializing SQL*Plus
SP2-0667: Message file sp1<lang>.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

[abc@hostname instantclient_12_2]$ ./sqlplus 
Segmentation fault (core dumped)

 

원인 : ORACLE_HOME 을 못찾는다.

 

그래서 ORACLE_HOME 을 보았다.

[abc@hostname ~]$ echo $ORACLE_HOME
/home/abc/oracle_client/instantclient_12_2

ORACLE_HOME을 .bash_profile 에 잘 설정해 놓았다.

그런데 왜 안될까를 확인해보았다.

 

본인의 환경에 따라 다를꺼같다.

필자는 아래 파일을 $ORACLE_HOME에다가 풀었다.

  • instantclient-basic-linux.x64-12.2.0.1.0.zip

그리고 .bash_profile 이다.

export ORACLE_HOME=/home/abc/oracle_client/instantclient_12_2
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME:$ORACLE_HOME/bin:$PATH
export NLS_LANG=KOREAN_KOREA.AL32UTF8
export TNS_ADMIN=/home/abc/oracle_client

필자는 LD_LIBRARY_PATH 에 lib 로 설정을 해놓았다.

LD_LIBRARY_PATH 에 .so 파일을 참조하는데 이 .so 파일은

oracle client 를 설치할 때 instantclient-basic-linux.x64-12.2.0.1.0.zip 이 파일에 있다.

 

이 파일을 $ORACLE_HOME/lib 디렉토리 밑에다가 풀던지

아니면 LD_LIBRARY_PATH에 $ORACLE_HOME을 추가하던지 하면 된다.

이후 sqlplus 를 실행하면 잘 작동할 것이다.

 

밑에 stackoverflow 를 참고하였다.

https://stackoverflow.com/questions/6013508/error-6-initializing-sqlplus

 

Error 6 Initializing SQL*Plus

When i open sqlplus it shows Error 6 Initializing SQL*Plus Message file sp1<Lang>.msb not found SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

stackoverflow.com

 

요약 :  *.so 파일들이 LD_LIBRARY_PATH 에 있는지 확인해라.

반응형

'에러 > Oracle' 카테고리의 다른 글

[Oracle Pro*C Error] build error  (0) 2024.03.04
[sqlplus] -bash : event not found  (0) 2024.02.22
반응형

OS Version : Rocky Linux release 9.3 (Blue Onyx)

 

해당 Error 원인 : 

libnsl.so.1 이 없다. 

dnf install -y libnsl

 

조치 후 정상적이다.

 

 

반응형
반응형
bb.c:(.text+0x0): multiple definition of `test'
/tmp/ccoyicve.o:aa.c:(.text+0x0): first defined here

 

 

첫번째 줄 해석 그대로 중복된 정의라는 얘기이다.

 

아래와 같이 해당 함수가 중복으로 선언이 되었다는 것을 알 수 있다. 

 

두번째 줄의 경우 첫번째로 선언되어 있는 곳을 알려준다. 

 

따라서 중복되는 함수를 유의 깊게 보면 된다.

 

위의 경우 test 라는 함수가 중복이 되었고, bb.c 파일과 aa.c 파일에 중복 선언이 되어있는 test 함수를 체크한다.

 

반응형
반응형

 

아예 ls, mv, cp 모든 기본명령어가 안먹혔다....

 

google에 검색하여 구세주같은 글을 보았다.

 

https://sh-safer.tistory.com/249

 

libc.so.6 심볼릭 링크 삭제시 복구 방법

원인 및 현상 무슨 정신으로 unlink libc.so.6 를 진행하여 shared library 심볼릭링크를 끊어 버렸다 shared library를 찾지 못한다는 내용. libc.so.6 cannot open shared object file no such file or directory 터미널까지 나

sh-safer.tistory.com

 

위 블로그에 있는 마지막 명령어가 먹어서 다행히도 잘 해결했다.

ldconfig -l -v /lib64/libc-2.24.so

 

 

 

반응형
반응형

glibc 를 설치하기 위하여 빌드를 하는 과정에서 생긴 오류이다.

bison 이 없거나 지나치게 오래되었다라는 건데... 

bison을 설치하여보자!!

 

참고 : https://stackoverflow.com/questions/53735137/glibc-configure-error-yacc-bison-missing

 

glibc configure error: yacc/bison missing

I'm following the instructions from LFS but with a twist: I'm only following parts of Section 5 - Constructing a Temporary System to the extent that I can build my own GCC, reason being that this i...

stackoverflow.com

 

역시나 stackoverflow 에는 없는 질문이 없다...

위와 같이 해결해보았다.

 

wget https://ftp.gnu.org/gnu/bison/bison-3.2.tar.gz
tar xf bison-3.2.tar.gz
cd bison-3.2
./configure --prefix=$HOME/install
make
make install

 

3.2 버전을 설치를 하는것이 해결이 될지는 모른다...

맨 위의 에러메세지에서 없거나 아주 오래되었다는거니까, 만약에 이 버전도 오래되었다면 최신버전을 설치해야겠다.

 

나와있는대로 조치하니 잘해결되었다!!~~ 

오늘도 무사히 셋팅을 하였다.

반응형
반응형

sqlite 설치 환경

linux version : Rocky Linux release 8.7 (Green Obsidian)

kernel version : 4.18.0-425.10.1.el8_7.x86_64

 

sqlite 를 처음 설치하고, 테스트하려고 테스트 명령어를 날려봤다.

sqlite3 test.db

sqlite3 test.db 라는 명령어를 처음 수행하였으나, error 가 발생하였다. 

$ sqlite3 test
sqlite3: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by sqlite3)
sqlite3: /lib64/libc.so.6: version `GLIBC_2.33' not found (required by sqlite3)
sqlite3: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by sqlite3)

 

일단 내가 해석해보자면, sqlite3 를 사용할때 필요한 library 들 中 libm.so.6 과 libc.so.6 라이브러리에 GLIBC_2.29, 2.33, 2.34 버전을 찾을 수 없다는 에러 메시지인거 같다.

 

우선 ldd 명령어로 라이브러리 의존성을 확인했다.

./sqlite3: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by ./sqlite3)
	linux-vdso.so.1 (0x00007ffc239c9000)
	libm.so.6 => /lib64/libm.so.6 (0x00007f0c4cc00000)
	libz.so.1 => /lib64/libz.so.1 (0x00007f0c4c9e8000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f0c4c622000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f0c4cf82000)

libm.so.6, libc.so.6 이 버젓이 있다.

결국 라이브러리를 업데이트를 해줘야할것같다.

 

google에 "version glibc_2.29' not found centos" 로 검색해보았다.

참고 : https://www.deok.me/entry/CentOS-6x-%EC%97%90%EC%84%9C-version-GLIBC214-not-found-%EC%97%90%EB%9F%AC%EA%B0%80-%EB%B0%9C%EC%83%9D%ED%95%A0%EB%95%8C

 

CentOS 6.x 에서 version 'GLIBC_2.14' not found 에러가 발생할때

CentOS 6.x 에서 version 'GLIBC_2.14' not found 와 같이 에러가 날 경우 처리 방법 입니다. 제 경우 docker-compose 를 사용하려는데 아래와 같이 에러가 나네요. $ docker-compose -v docker-compose: /lib64/libc.so.6: version `

www.deok.me

 

결국 위의 블로그를 참고해 없는 버전에 대해 glibc 를 직접 받아주었다.

나는 2.29, 2.33, 2.34 버전이 없다고 했으니 받아보았다.

linux 서버이니까 다운받아서 filezilla는 번거로우니 wget 으로 설치해보겠다.

wget https://ftp.gnu.org/gnu/glibc/glibc-2.29.tar.gz
wget https://ftp.gnu.org/gnu/glibc/glibc-2.33.tar.gz
wget https://ftp.gnu.org/gnu/glibc/glibc-2.34.tar.gz

 

압축 푼 뒤 설치하였다.

 $ tar zxvf glibc-2.29.tar.gz
 $ cd glibc-2.29
 $ mkdir build; cd build;
 $ ../configure --prefix=/opt/glibc-2.29
 $ make -j4
 $ sudo make install
 $ export LD_LIBRARY_PATH=/opt/glibc-2.29/lib

LD_LIBRARY_PATH 는 재로그인하면 셋팅이 안될꺼기 때문에

.bash_profile 에 아래와 같이 저장하였다.

export LD_LIBRARY_PATH=/opt/glibc-2.29/lib:$LD_LIBRARY_PATH

 

저장 후에 다시 sqlite3 testdb 를 날려보았다.

결과는?? 똑같았다.... 무엇이 문제인가 생각해보니 /lib64 에 있던 libm.so.6이 링크였고, libm.so-2.28을 물고있어서 링크를 교체해 주었다.

# libm.so.6 이 있는 위치로 이동
cd /lib64
# 기존 링크 삭제
sudo rm libm.so.6
# 삭제후 재 2-29 버전의 libm 으로 교체
sudo ln -s /opt/glibc-2.29/lib/libm-29.so libm.so.6

 

libc.so.6 같은경우는 조심해야한다... 링크 삭제시에 기본 명령어들을 사용할수없다.

 

이후 sqlite 재실행 해보았다.

$ sqlite3 testdb
sqlite3: /lib64/libc.so.6: version `GLIBC_2.33' not found (required by sqlite3)
sqlite3: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by sqlite3)

드디어 2.29 버전은 사라졌다!!

2.33 과 2.34를 이제 나머지 셋팅을 해주어야하는데 libc.so.6은 다른 방법이 있는 것 같다...

 

반응형

+ Recent posts