编译c语言程序扩展ruby

 

环境:

windows 10 64bit

ruby 2.2.4p230 (2015-12-16 revision 53155) [i386-mingw32]

gcc version 4.8.1 (GCC)

 

minGw的配置:

 

//家目录

图片 1

 

//C头文件目录

图片 2

 

 

//C++头文件目录

CPLUS_INCLUDE_PATH=%MINGW_PATH%/include/c++/4.8.1;%MINGW_PATH%/include/c++/4.8.1/mingw32;%MINGW_PATH%/include/c++/4.8.1/backward

鉴于本次测试是用c语言写的扩充 所以不待配备c++

 

//可执行程序目录

Path中:

图片 3

 

小心mingw的bin下面不让make 而为 mingw32-make。需要团结下手改一下

 

例行情况下ruby生成的makefile

直接make会报各种很

 

http://stackoverflow.com/questions/36983242/error-on-create-a-ruby-extension-in-c/37007688#37007688

太婆的发了好几上尚未人料理我,无奈只有和谐研究了。

 

良的原委是:makefile的片段路线地址不对准

待自己手动修改

d:/RailsInstaller/Ruby2.2.0/include/ruby-2.2.0/ruby/win32.h:319:44: warning:'st
 extern int clock_gettime(clockid_t, struct timespec *);
                                            ^
d:/RailsInstaller/Ruby2.2.0/include/ruby-2.2.0/ruby/win32.h:320:43: warning: 'st
 externint clock_getres(clockid_t,struct timespec *);

这种擦是因

D:\RailsInstaller\Ruby2.2.0\include\ruby-2.2.0\ruby\win32.h 的 timespec 没有事先定义
在第225履行在 struct timespec; 就好了

 

process_begin:CreateProcess(NULL, rm -f mytest.so,...) failed.
make (e=2):Makefile:271: recipe for target 'mytest.so' fail

这摩擦是因 makefile 里面大多加了一个 process
来删除so文件。这里我将它们去丢就如常了 (make -d
可以洞察到哪一样步出错)

图片 4

 

ok!。接下来测试于ruby中是否能调用成功吧?

图片 5

 

及此以windows环境下到搞定!

 

图片 6