インテルEdisonからデバイス(iOSとAndroid)にサウンドをストリームするCプログラムをコンパイルするには、いくつかの問題があります。複数のヘッダで 'struct timeval'を再定義する
Cプログラムを作成しました: 私のプログラムではalsa/asoundlib.hとpthread.hを使用しますが、ALSAではこれを許可しないため、sys/time.hは含まれません。
私は自分のコンピュータ上でそれをコンパイルするとき、私はi'ts罰金コンパイル、私のプログラムでは体timevalの多くを使用しますが、私のエジソンにする場合I:
gcc -std=c99 -Wall -O0 -ggdb -o sender sender.c spsc_circular_queue.c -lopus -lasound -lpthread
In file included from /usr/include/alsa/asoundlib.h:49:0,
from sender.c:16:
/usr/include/alsa/global.h:145:8: error: redefinition of 'struct timespec'
struct timespec {
^
In file included from /usr/include/alsa/global.h:34:0,
from /usr/include/alsa/asoundlib.h:49,
from sender.c:16:
/usr/include/time.h:120:8: note: originally defined here
struct timespec
^
In file included from /usr/include/time.h:41:0,
from /usr/include/sched.h:34,
from sender.c:18:
/usr/include/bits/time.h:30:8: error: redefinition of 'struct timeval'
struct timeval
^
In file included from /usr/include/alsa/asoundlib.h:49:0,
from sender.c:16:
/usr/include/alsa/global.h:140:8: note: originally defined here
struct timeval {
^
Makefile:16: recipe for target 'sender' failed
make: *** [sender] Error 1
がどのように私はこれらのredifinitionsを停止するために管理することができますか?! ありがとうございます!
追加情報:
私は、次のとおりです。
#include <assert.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <errno.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>
#include <alloca.h>
#include <limits.h>
#include <inttypes.h>
#include <alsa/asoundlib.h>
#include "../opus/include/opus.h"
#include <pthread.h>
#include "spsc_circular_queue.h"
私は何もALSAがタイプstruct timespec
とstruct timeval
に依存
'/ usr/include/sched.h'は'/usr/include/time.h'を含む18行目のsender.cに含まれています。 – mch
これを削除する変更はありません。 – maathor
あなたは '#include'を実行しました。これは '#include 'です。それが問題です。 '#include 'を削除すると、エラーメッセージが変わって次の問題につながります。 –
mch