Skip to content

error: 'CLOCK_MONOTONIC' undeclared #54

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Closed
lgehr opened this issue Mar 12, 2023 · 6 comments · Fixed by #51
Closed

error: 'CLOCK_MONOTONIC' undeclared #54

lgehr opened this issue Mar 12, 2023 · 6 comments · Fixed by #51
Labels
help wanted Extra attention is needed

Comments

@lgehr
Copy link

lgehr commented Mar 12, 2023

The initial make fails with CLOCK_MONOTONIC undeclared

I llama.cpp build info: 
I UNAME_S:  Linux
I UNAME_P:  unknown
I UNAME_M:  x86_64
I CFLAGS:   -I.              -O3 -DNDEBUG -std=c11   -fPIC -pthread -mavx -mavx2 -mfma -mf16c -msse3
I CXXFLAGS: -I. -I./examples -O3 -DNDEBUG -std=c++11 -fPIC -pthread
I LDFLAGS:  
I CC:       cc (Alpine 12.2.1_git20220924-r9) 12.2.1 20220924
I CXX:      g++ (Alpine 12.2.1_git20220924-r9) 12.2.1 20220924

cc  -I.              -O3 -DNDEBUG -std=c11   -fPIC -pthread -mavx -mavx2 -mfma -mf16c -msse3   -c ggml.c -o ggml.o
ggml.c: In function 'ggml_time_ms':
ggml.c:309:5: warning: implicit declaration of function 'clock_gettime' [-Wimplicit-function-declaration]
  309 |     clock_gettime(CLOCK_MONOTONIC, &ts);
      |     ^~~~~~~~~~~~~
ggml.c:309:19: error: 'CLOCK_MONOTONIC' undeclared (first use in this function)
  309 |     clock_gettime(CLOCK_MONOTONIC, &ts);
      |                   ^~~~~~~~~~~~~~~
ggml.c:309:19: note: each undeclared identifier is reported only once for each function it appears in
ggml.c: In function 'ggml_time_us':
ggml.c:315:19: error: 'CLOCK_MONOTONIC' undeclared (first use in this function)
  315 |     clock_gettime(CLOCK_MONOTONIC, &ts);
      |                   ^~~~~~~~~~~~~~~
make: *** [Makefile:182: ggml.o] Error 1

This can be solved by adding -D_POSIX_C_SOURCE=199309L to the C{,XX}FLAGS in the Makefile. See this Stackoverflow question: https://stackoverflow.com/questions/29666937/error-clock-monotonic-undeclared-first-use-in-this-function

@lgehr lgehr changed the title error: 'CLOCK_MONOTONIC' undeclared on Alpine Linux error: 'CLOCK_MONOTONIC' undeclared Mar 12, 2023
@liuxiaocs7
Copy link

same question

(base) lizheng@lizheng-System-Product-Name:/home/ytkj/root1/liuxiao/LLM/llama.cpp$ make
I llama.cpp build info: 
I UNAME_S:  Linux
I UNAME_P:  x86_64
I UNAME_M:  x86_64
I CFLAGS:   -I.              -O3 -DNDEBUG -std=c11   -fPIC -pthread -mavx -mavx2 -mfma -mf16c -msse3
I CXXFLAGS: -I. -I./examples -O3 -DNDEBUG -std=c++11 -fPIC -pthread
I LDFLAGS:  
I CC:       cc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609
I CXX:      g++ (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609

cc  -I.              -O3 -DNDEBUG -std=c11   -fPIC -pthread -mavx -mavx2 -mfma -mf16c -msse3   -c ggml.c -o ggml.o
ggml.c: In function ‘ggml_time_ms’:
ggml.c:309:5: warning: implicit declaration of function ‘clock_gettime’ [-Wimplicit-function-declaration]
     clock_gettime(CLOCK_MONOTONIC, &ts);
     ^
ggml.c:309:19: error: ‘CLOCK_MONOTONIC’ undeclared (first use in this function)
     clock_gettime(CLOCK_MONOTONIC, &ts);
                   ^
ggml.c:309:19: note: each undeclared identifier is reported only once for each function it appears in
ggml.c: In function ‘ggml_time_us’:
ggml.c:315:19: error: ‘CLOCK_MONOTONIC’ undeclared (first use in this function)
     clock_gettime(CLOCK_MONOTONIC, &ts);
                   ^
Makefile:182: recipe for target 'ggml.o' failed
make: *** [ggml.o] Error 1

@wshzd
Copy link

wshzd commented Mar 13, 2023

在ggml.h头文件中增加以下宏定义即可
#define _POSIX_C_SOURCE 199309L

@ggerganov ggerganov added the help wanted Extra attention is needed label Mar 13, 2023
@anishthite
Copy link

在ggml.h头文件中增加以下宏定义即可 #define _POSIX_C_SOURCE 199309L

This fixed it for me

@gquarles
Copy link

Adding -lrt to the CXXFLAGS and changing CFLAGS to use -std=gnu11 worked for me, running Ubuntu 16

@tdr1991
Copy link

tdr1991 commented Mar 15, 2023

我的机器是centos7, 我在 Makefile文件添加 -D_POSIX_C_SOURCE=199309L 可以解决问题。

CFLAGS   = -I.              -O3 -DNDEBUG -std=c11   -fPIC -D_POSIX_C_SOURCE=199309L
CXXFLAGS = -I. -I./examples -O3 -DNDEBUG -std=c++11 -fPIC -D_POSIX_C_SOURCE=199309L

Hades32 pushed a commit to Hades32/llama.cpp that referenced this issue Mar 21, 2023
@Errand24
Copy link

Errand24 commented Apr 5, 2023

Same happens when compiling on macOS 10.7:
ggml.c:310:19: error: use of undeclared identifier 'CLOCK MONOTONIC'
ggml.c:316:19: error: use of undeclared identifier 'CLOCK MONOTONIC'

appleboy added a commit to appleboy/whisper.cpp that referenced this issue Jul 5, 2023
- Define `_POSIX_C_SOURCE` with value `199309L`

ggml-org/llama.cpp#54

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

Successfully merging a pull request may close this issue.

8 participants