在 Windows 上使用 rebar 编译 NIF 项目

Posted

技术标签:

【中文标题】在 Windows 上使用 rebar 编译 NIF 项目【英文标题】:Compiling NIF project with rebar on Windows 【发布时间】:2015-07-05 15:54:35 【问题描述】:

为了在 Windows 上运行我的第一个 NIF 项目,我遵循了以下步骤:

    下载 Hellonif -master :https://github.com/vmx/hellonif

    打开命令提示符(cmd):

    2.1 cd C:\Users\Desktop\hellonif-master =>项目路径

    2.2 SET PATH=C:\Program Files\C:\Program Files\erl6.4\bin => 脚本路径

    将此行添加到 rebar.config:port_env, ["CC", "/C:/Program Files (x86)/CodeBlocks/MinGWp/bin/mingw32-gcc"]。

    打开命令提示符(cmd)

    4.1 钢筋编译

不幸的是,我遇到了这个错误:

hellonif-master (compile)
compiling C:\Users\Desktop\hellonif-master\c_src\hello.c
La syntaxe du nom de fichier, de répertoire ou de volume est incorrecte.

你能帮我解决这个问题吗提前谢谢

【问题讨论】:

能否取消本地化错误信息? sorry for using french 这是错误信息的翻译:文件名、目录或卷的语法不正确。 【参考方案1】:

您的CC 路径无效。标准的 windows 文件路径表示法是

 "Drive:\dir\dir\file". 

windows 也接受命令行级别的直斜杠,这给了你

"Drive:/dir/dir/file".

一些移植的 Linux 应用程序需要 mingw 或 cygwin 路径格式:

Mingw: "/drive/dir/dir/file"
Cygwin "/cygdrives/drive/dir/dir/file"

您的"/Drive:/dir/dir/file" 无效。

但是,您可以将 CC 路径添加到搜索路径列表 (PATH),并使用标准的 ccgcc 文件名进行编译(Mingw 提供这两个应用程序作为对 mingw32-gcc 的引用)

【讨论】:

谢谢 Lol4t0 的回答,我不明白第一个解决方案我应该在我的情况下放置什么路径。对于第二个解决方案,我添加了 C:/Program Files (x86)/ CodeBlocks/MinGWp/bin 到 PATH 但我有这个错误:“cl.exe 无法识别”。提前谢谢 试试"C:/Program Files (x86)/CodeBlocks/MinGWp/bin/gcc.exe""/C/Program Files (x86)/CodeBlocks/MinGWp/bin/gcc.exe"。不幸的是,第二个它想要cl(即MSVC编译器),第二个你可以尝试额外设置CC=gcc 我试过“C:/Program Files (x86)/CodeBlocks/MinGWp/bin/gcc.exe”和“/C/Program Files (x86)/CodeBlocks/MinGWp/bin/gcc.exe “但仍然无法正常工作,我在此链接中读到:***.com/questions/15043040/… 我应该更改 CFLAGS 是否必须更改此变量??如果是这样如何更改这个变量(我的项目中没有 Makefile)以及这个变量的值是什么 如果您不想要,您不必更改 CFLAGS。 CFLAGS 只是编译器标志 当我像这里一样选择编译器时,编译器如何识别头文件erl_nif.h...这不是探针吗???

以上是关于在 Windows 上使用 rebar 编译 NIF 项目的主要内容,如果未能解决你的问题,请参考以下文章

Rebar3 无法下载对 Windows 10 的依赖

如何在Rebar3编译时添加额外的文件或目录?

为啥我不能在使用 rebar3 生成的应用程序中运行 rebar3 命令?

从源代码编译 MongooseIM 时 rebar_core 中未捕获的错误

rebar使用

rebar3 项目在其他主机上产生错误的命令