Windows 7 中的 rpcgen - 未找到预处理器

Posted

技术标签:

【中文标题】Windows 7 中的 rpcgen - 未找到预处理器【英文标题】:rpcgen in Windows 7 - no preprocessor found 【发布时间】:2015-09-16 06:47:20 【问题描述】:

我创建了这样的 IDL:

struct intpair  
    int a; 
    int b; 
; 
program ADD_PROG  
    version ADD_VERS  
         int ADD(intpair) = 1; 
      = 1; 
 = 0x23451111;

我安装了 rpcgen,但是当我尝试用它编译时

rpcgen -C add.x

rpcgen add.x

显示下面的错误消息

找不到任何 C 预处理器 (cpp)

我安装了 gcc。


好的,该命令现在正在运行,但它返回一条错误消息。

C:\Users\baco\Desktop\rpcTest>rpcgen -C -Y "C:/Program Files (x86)/Dev-Cpp/MinGW64/bin" add.x 

产生了输出:

Der Befehl "C:/Program" ist entweder falsch geschrieben oder konnte nicht gefunden werden.

因此它会产生一条错误消息(该命令未找到或拼写错误),但还会创建以下文件: add.h, add_clnt.c, add_svc.c, add_xdr.c

当我添加 -a 标志以生成额外的模板代码时,会出现以下错误消息:

rpcgen: unable to open Makefile.add=C:\Ú☻<ms\: m

也许路径又出问题了?

【问题讨论】:

使用 -Y 选项指定 gcc 的安装位置。 我试过:rpcgen -Y "C:\Program Files (x86)\Dev-Cpp\MinGW64\bin" add.x 但遗憾的是它给了我“fopen:没有这样的文件或目录跨度> 你肯定会说 Unix lisp 吗?使用正斜杠。 C:\Users\baco\Desktop\rpcTest>rpcgen -Y "C:/Program Files (x86)/Dev-Cpp/MinGW64/ bin" add.x Zugriff verweigert fopen : 没有这样的文件或目录 你的 rpcgen 是从哪里得到的?您能否验证 cppgcc 是否在您的 PATH 中? (只需打开命令窗口并运行gcc 和`cpp) 【参考方案1】:

您可以使用 -Y 标志来指定 cpp 所在的路径。例如,在 Windows 上,这可能是: rpcgen -Y c:\pathtogcc myfile.x

回答上面的 fopen 错误是一个权限问题,即。拒绝访问。例如,在 Windows 上,您需要以管理员身份运行 cmd 提示符。

【讨论】:

【参考方案2】:

检查这些:

    gcc 在 PATH 中吗?你是如何安装gcc的? Cygwin 还是其他? C 预处理器是否命名为cpp? (在某些系统上是cccp

如果一切都失败了,请创建一个名为 cpp.bat 的脚本,该脚本使用所有参数调用 gcc -E

【讨论】:

gcc 在路径中。我安装了 DevCpp,刚刚将“C:\Program Files (x86)\Dev-Cpp\MinGW64\bin”添加到路径中。我不知道如何创建这样的脚本cpp.bat。? 预处理器名为cpp.exe【参考方案3】:

这是我所做的,它在 Windows 7 系统上运行: (1) 使用以下软件包安装 cygwin 32 位 rpcgen gcc核心 所有 isl 库(cpp.exe 需要 isl、isl10、cloog-isl,...) (2) 将 cygwin\bin 添加到 PATH(在 dos 中) (3) 在windows DOS 提示符下运行rpcgen,就可以生成.h 和.c 文件了。

根据您的描述,您的 rpcgen 似乎在寻找 cpp 而不是 cpp.exe 并且不知道有什么方法可以改变它,因此,选择正确的 rpcgen 来寻找 cpp.exe 是要走的路。我确实查看了 rpcgen 代码,它似乎根据操作系统设置查找 cpp 或 cpp.exe。

【讨论】:

是的,这是可行的,但是当我尝试使用 make 制作可执行文件时,它给了我一个错误。 C:\Users\baco\Desktop\rpcTest>make cc -g -c -o add_clnt.o add_clnt.c 在 add_clnt.c:7:0 中包含的文件中:add.h:9 :21:致命错误:rpc/rpc.h:没有这样的文件或目录#include ^ 编译终止。 :目标“add_clnt.o”的配方失败 make:*** [add_clnt.o] 错误 1 我将 C:\cygwin\usr\include\tirpc\rpc 添加到路径中。现在还有其他错误。 我的构建步骤有下一步,将 source.c 中的 rpc/rpc.h 替换为 stdint.h 和 rpc/types.h 等。所以,本质上,rpc/rpc.h 需要已删除,并且需要从其他地方获得等效项。由于我的交叉编译器包有 rpc/types.h 它对我有用(对于我的程序)。【参考方案4】:

它不喜欢预处理器路径中的空格。

【讨论】:

以上是关于Windows 7 中的 rpcgen - 未找到预处理器的主要内容,如果未能解决你的问题,请参考以下文章

使用 rpcgen 从远程服务器返回字符串

Windows 7 64 位 libsvm 和 python 错误:函数 'svm_get_sv_indices' 未找到

什么是协议编译器?为什么 rpcgen 被称为协议编译器?

Telegram + PHP (Windows 7):无法打开流:HTTP 请求失败! HTTP/1.1 404 未找到

在 RPCGen 中将字符指针从客户端传递到服务器

将 unsigned long long 与 rpcgen 一起使用会产生错误