私はプログラムでclock_gettimeを使用しています。私も含めて試してみましたが、いずれも動作しませんでした。コンパイラの引数に-lrtを追加しましたが、同じエラーが表示されます。clock_gettimeとCLOCK_MONOTONICのコンパイルエラー
これは
CentOS Linux release 7.2.1511 (Core)
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)
GNU ld version 2.23.52.0.1-55.el7 20130226
ldd (GNU libc) 2.17
コンパイラの出力である:
gcc -o main packet.c connect.c transport.c accept.c main.c close.c util.c receive.c send.c congestion.c -Wall -g -std=c99 -lrt
util.c: In function ‘millis’:
util.c:42:21: error: storage size of ‘t’ isn’t known
struct timespec t;
^
util.c:43:5: warning: implicit declaration of function ‘clock_gettime’ [-Wimplicit-function-declaration]
clock_gettime(CLOCK_MONOTONIC_RAW, &t);
^
util.c:43:19: error: ‘CLOCK_MONOTONIC_RAW’ undeclared (first use in this function)
clock_gettime(CLOCK_MONOTONIC_RAW, &t);
^
Makefileの
CFLAGS = -Wall -g -std=c99
LIBS = -lrt
# Should be equivalent to your list of C files, if you don't build selectively
SRC=$(wildcard *.c)
main: $(SRC)
gcc -o [email protected] $^ $(CFLAGS) $(LIBS)
util.hのトップ
#ifndef UTILS_438_H_
#define UTILS_438_H_
#include "const.h"
#include "data.h"
#include "transport.h"
#include <time.h>
util.c
#include "util.h"
#include <time.h>
#include <stdio.h>
#include <string.h>
の10
トップ、私はヘッダ(<time.h>
)を含む前にこの
リンカエラーではない、 '#include'問題のどこかで – yano
コンパイラの警告とエラーが出てくる理由を理解する必要があります。リンクの問題ではありません。あなたは 'time.h'をインクルードしているので、警告を出すべきではありません。 [mcve]を作成して、さらに手伝ってもらえますか?おそらく 'c99'フラグが途切れてしまうのでしょうか? (ちょうど何かを推測しようとする) –
代わりに-std = gnu99を試しますか? – Bonan