你从一个好的地方开始,你刚刚遇到了你的第一个编译错误。
这里是:
In file included from settings.c:23:
input/input_common.h:73: error: redefinition of typedef ‘rarch_joypad_driver_t’
driver.h:327: note: previous declaration of ‘rarch_joypad_driver_t’ was here
以下是 input_common.h 的摘录:
typedef struct rarch_joypad_driver
{
...
} rarch_joypad_driver_t;
以下是 driver.h 的摘录:
typedef struct rarch_joypad_driver rarch_joypad_driver_t;
正如错误所说,正在重新定义 typedef。我使用来自 Ubuntu 12.04 的 gcc 4.6.3 进行了测试:
typedef struct foo { int bar; } foo_t;
typedef struct foo foo_t;
int main() { return 0; }
这可以很好地编译和链接。使用 x86_64-nacl-gcc(使用 gcc 4.4.3)编译的相同代码会出现以下错误:
typedef.c:2: error: redefinition of typedef ‘foo_t’
typedef.c:1: note: previous declaration of ‘foo_t’ was here
似乎在最近的 gcc 版本中这个错误已经被放宽了。我做了一些搜索,发现了这个 stackoverflow 链接:Why "Redefinition of typedef" error with GCC 4.3 but not GCC 4.6? .
值得注意的是,x86_64-nacl-g++ 将不加修改地编译这段代码。这里有两件事可以尝试:
- 使用 x86_64-nacl-g++ 而不是 x86_64-nacl-gcc 使用 CC 编译
ifdef 去掉 driver.h 中的定义,并将该文件中的其他用途替换为struct rarch_joypad_driver
.
对于#2,您可以使用以下内容:
#ifndef __native_client__
...
#endif
祝你好运,可能会有更多的编译失败需要修复。:)