编译c语言程序扩展ruby

简介: 环境: windows 10 64bit ruby 2.2.4p230 (2015-12-16 revision 53155) [i386-mingw32] gcc version 4.8.

 

环境:
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环境下完美搞定!
 
MyTest.rar

如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,转载文章之后须在文章页面明显位置给出作者和原文连接,谢谢。
目录
相关文章
|
1月前
|
存储 自然语言处理 编译器
【C语言】编译与链接:深入理解程序构建过程
【C语言】编译与链接:深入理解程序构建过程
|
1月前
|
自然语言处理 编译器 Linux
【C语言篇】编译和链接以及预处理介绍(上篇)1
【C语言篇】编译和链接以及预处理介绍(上篇)
42 1
|
1月前
|
存储 自然语言处理 编译器
C语言编译和链接
C语言编译和链接
C语言编译和链接
|
1月前
|
编译器 Linux C语言
【C语言篇】编译和链接以及预处理介绍(下篇)
【C语言篇】编译和链接以及预处理介绍(下篇)
32 1
【C语言篇】编译和链接以及预处理介绍(下篇)
|
1月前
|
自然语言处理 编译器 Linux
C语言中抽象的编译和链接原理
C语言中抽象的编译和链接原理
20 1
|
1月前
|
存储 文件存储 C语言
深入C语言:文件操作实现局外影响程序
深入C语言:文件操作实现局外影响程序
|
1月前
|
编译器 C语言
初识C语言:扩展世界观,选择语句之行
初识C语言:扩展世界观,选择语句之行
|
2月前
|
存储 编译器 程序员
C语言程序的基本结构
C语言程序的基本结构包括:1)预处理指令,如 `#include` 和 `#define`;2)主函数 `main()`,程序从这里开始执行;3)函数声明与定义,执行特定任务的代码块;4)变量声明与初始化,用于存储数据;5)语句和表达式,构成程序基本执行单位;6)注释,解释代码功能。示例代码展示了这些组成部分的应用。
97 10
|
1月前
|
存储 C语言
【C语言篇】编译和链接以及预处理介绍(上篇)2
【C语言篇】编译和链接以及预处理介绍(上篇)
37 0
|
2月前
|
SQL 关系型数据库 C语言
PostgreSQL SQL扩展 ---- C语言函数(三)
可以用C(或者与C兼容,比如C++)语言编写用户自定义函数(User-defined functions)。这些函数被编译到动态可加载目标文件(也称为共享库)中并被守护进程加载到服务中。“C语言函数”与“内部函数”的区别就在于动态加载这个特性,二者的实际编码约定本质上是相同的(因此,标准的内部函数库为用户自定义C语言函数提供了丰富的示例代码)