2016-07-28 53 views
0

目前我正在寫從澳大利亞(GitHub)在C.C棟與在OS X和Linux

基礎上,藪項目延遲容忍網絡中的RPC系統的automake主要是我開發在MacOS埃爾卡皮坦和一切工作正常。但是,我的代碼在macOS和Linux上運行有點重要。但是Linux會造成麻煩。

我選擇automake作爲我的構建系統,因爲這是我至少有一點經驗的唯一一個。我也嘗試過CMake,但收效甚微。

我現在的問題是macOS上的所有東西都能正常工作。但在Linux(Debian)上沒有任何編譯。 autoreconf產生一個沒有錯誤的配置腳本,configure產生一個沒有錯誤的Makefile。但是make會產生很多錯誤。如果我說了很多,我真的很重要(約75000行)。

的第一個問題是: In file included from /usr/include/x86_64-linux-gnu/sys/types.h:29:0, from /usr/local/include/curl/curlbuild.h:131, from /usr/local/include/curl/curl.h:34, from rpc.h:1, from main.c:1: /usr/include/x86_64-linux-gnu/bits/types.h:30:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘typedef’ typedef unsigned char __u_char;

我GOOGLE了四周,發現有些人說,這種類型的錯誤的地方來從用戶代碼,也許缺少;或相似。但我仔細檢查了一切。而且缺少;也會成爲macOS上的問題。

我的代碼可以在我的Github repo.中找到請使用dev分支。 在這一點上回購是有點噁心和不乾淨。當一切正在運行時我會清理乾淨。

謝謝您的幫助:)

回答

0

這是因爲serval/general/features.h。這裏是怎麼回事:

curl/curl.h得到包括curlbuild.h,其中包括sys/types.h

sys/types.h包括features.h(期待一個來自glibc的到來),其中包括sys/cdefs.h,它定義__BEGIN_CDECL(到任何操作,因爲這是C,而不是C++。)

sys/types.h開始於(剪切周圍是東西不需要)

__BEGIN_CDECL 

typedef unsigned char __u_char; 

因爲__BEGIN_CDECL沒有定義,所以出錯。

避免在您的命令行中使用-Iserval/general並將文件包含完整的相對路徑,它應該沒問題。

+0

謝謝,解決了這個問題。 – adur