2016-07-28 73 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