我試圖編譯timersub()函數在Linux,但我總是得到:在Linux中隱式聲明timersub()函數 - 我必須定義什麼?
test.c: In function ‘main’:
test.c:27:2: warning: implicit declaration of function ‘timersub’ [-Wimplicit-function-declaration]
timersub(&now, &then, &diff);
^
/tmp/ccLzfLsl.o: In function `main':
test.c:(.text+0x55): undefined reference to `timersub'
collect2: error: ld returned 1 exit status
這是所有我使用的庫函數的只是一個簡單的代碼..
#define _XOPEN_SOURCE
#define _POSIX_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <sys/time.h>
#include "openflow.h"
#include "cbench.h"
#include "fakeswitch.h"
#include <unistd.h>
int main()
{
struct timeval now, then, diff;
gettimeofday(&then,NULL);
sleep(1);
gettimeofday(&now, NULL);
timersub(&now, &then, &diff);
return 0;
}
我與它編譯:
GCC --std = C99 -Wall -DTRACE -o測試test.c的
FYI我的gcc編譯器現在(2016)說,你應該使用_DEFAULT_SOURCE,不_BSD_SOURCE。 – moodboom
@moodboom的確。但是舊的Glibc可能仍然需要'_BSD_SOURCE'。我已經更新了答案,以說明差異。 –