zoukankan      html  css  js  c++  java
  • 编译c语言程序扩展ruby

    环境:
    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:RailsInstallerRuby2.2.0include uby-2.2.0 ubywin32.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
  • 相关阅读:
    每种特定的迭代器如何使用
    常量迭代器
    容器迭代器
    三十分钟掌握STL
    高快省的排序算法
    FloatTest32 Example
    /浮点数的比较
    java第一天
    ACwing 898
    POJ 3268
  • 原文地址:https://www.cnblogs.com/yudongdong/p/6441566.html
Copyright © 2011-2022 走看看