我找不到这么多的文档。 我应如何包装宝石,使得安装宝石当C扩展编译?
特别是我想这样做:
在Linux和MacOSX上我想编译创业板C扩展安装
在Windows上,我想简单地安装一个预编译的.so
有这方面的帮助,特别是例如源,将是非常有用:)
我找不到这么多的文档。 我应如何包装宝石,使得安装宝石当C扩展编译?
特别是我想这样做:
在Linux和MacOSX上我想编译创业板C扩展安装
在Windows上,我想简单地安装一个预编译的.so
有这方面的帮助,特别是例如源,将是非常有用:)
路易斯·拉维纳创造rake-compiler
只是用于这一目的。
但是,你确定你需要一个C扩展? 关于C扩展的事情是,每一个Ruby实现了自己的C扩展API(和非基于C的像XRuby,JRuby的,Ruby.NET,IronRuby的,HotRuby,磁浮,红太阳还没有一个在所有),其意味着你的C扩展只能在一个实施工作。 而且,由于MRI 仅实现1.8红宝石和YARV 只实现Ruby 1.9的,而我们目前在1.8和1.9之间的过渡阶段,有机会,有很多人会使用至少两种不同的实现。 (我个人使用5:MRI,YARV,JRuby中,IronRuby和Rubinius的。)
也许你是关闭更好地使用Ruby的FFI 。 红宝石FFI是Ruby的FFI(外国功能接口)( 杜 ),它允许结合和地图C库在纯Ruby的方式,是跨越Ruby实现便携式的。 该FFI API最早是由开发埃文凤凰作为原生扩展API为Rubinius的 ,则将其通过的查尔斯·奥利弗·纳特 (和实施韦恩·迈斯纳 )的JRuby的 。 韦恩然后还写了Ruby的FFI的宝石 ,它包含了MRI和YARV C扩展。 洛朗圣索内蒂实现Ruby的FFI的MacRuby的 , 马克-安德烈·Cournoyer的tinyrb还支持FFI (再次以书面韦恩·迈斯纳 )和磁悬浮开发商也努力。 这意味着,如果你能FFI让您的图书馆工作,而不是一个C扩展,你就会自动支持6所Ruby实现的,而不是只有一个。
唯一的理由使用C扩展,而不是一个FFI扩展是,如果你真的想要一些实施的具体行为。 这方面的一个例子是分析树的宝石,其深伸进MRI的肠子和剥去分析树的内存中表示。
最后但并非最不重要的,看看在尼斯FFI通过项目约翰Croisant ,其目的是使用,使红宝石FFI甚至更好。
我有一个GitHub库,我只是保持我自己的参考和这些东西帮助我。
Ruby_C_extensions
它可以帮助环顾四周GitHub上找到已经只为你的学习书面宝石的一些很好的例子,但继续和克隆它们,看看你是否可以在系统上建立他们。 如果他们放在一起权利,他们应该建立就好了。
请注意,你需要在任何平台上你使用的是构建工具。 下面是我刚看了,告诉你你需要为Linux的视频。
Python编程环境设置
现在我知道了,它说的Python,他不告诉你如何安装构建工具包。
我使用的devkit的Windows和它为我工作。 与任何的工具的安装是最重要的。
我还用耙编译器和锄头来设置文件夹结构。 因此,它看起来就像我们通过让一个耙子,锄头瘦一些园艺。 :-D