Skip to content

error: 'CLOCK_MONOTONIC' undeclared #54

New issue

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

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

Already on GitHub? Sign in 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 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

Successfully merging a pull request may close this issue.

8 participants