반응형

 

문제/에러

shm_open이 정의되어있지 않음.

 

/usr/bin/ld: /tmp/ccBuilil.o: in function `main':
hw4_3.c:(.text+0x3b1): undefined reference to `shm_open'shm_open
collect2: error: ld returned 1 exit status

 

원인

shm_open을 POSIX 라이브러리를 포함해야 사용할 수 있는데, 그걸 포함 안시켜줬기 때문에 발생한 에러이다.

여기서, POSIX 라이브러리는 librt라는 라이브러리에 해당한다.

즉, librt라는 라이브러리를, 링킹할 때, 검색하게끔 만들어 주지 않아서이다.

 

 

(그래서 man페이지에, -lrt라고 쓰여있음.)

https://man7.org/linux/man-pages/man3/shm_open.3.html

 

해결방안

librt라는 라이브러리를, 링킹할 때, 검색하게끔 만들어 주자.

gcc 컴파일러 옵션으로, 가능하게 하다.

 

즉, 아래와 같이 이전->이후로 변경한다.

- 이전

$ gcc hw4_3.c

 

- 이후

$ gcc hw4_3.c -lrt

 

 

참고자료

https://stackoverflow.com/questions/48410966/undefined-reference-to-shm-open

https://stackoverflow.com/questions/9923495/undefined-reference-shm-open-already-add-lrt-flag-here

 

http://cloudrain21.com/two-ways-to-use-shared-memory

 

shared memory 를 사용하는 두가지 방법 - Rain.i

All about IT tech, especially database, cloud, linux, clustering.

cloudrain21.com

 

반응형