环境:
windows 10 64bit
ruby 2.2.4p230 (2015-12-16 revision 53155) [i386-mingw32]
gcc version 4.8.1 (GCC)
minGw的配置:
//家目录
//C头文件目录
//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中:
注意mingw的bin下面不叫make 而叫
mingw32-make
。需要自己动手改一下
正常情况下ruby生成的makefile
直接make会报各种异常
奶奶的发了好几天没人理我,无奈只有自己研究了。
异常的原因是: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 可以观察到哪一步出错)
ok!。接下来测试在ruby中是否能调用成功呢?
到此在windows环境下完美搞定!
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,转载文章之后须在文章页面明显位置给出作者和原文连接,谢谢。