Bir C uzantısı etrafında bir yakut mücevher oluşturmaya çalışıyorum. C uzantısı ruby extconf.rb; make; sudo make install
rutinini kullanarak iyi derler, ancak komisyon kullanarak bir taş oluşturmaya çalıştığımda, işlem bu izlemenin altındaki hatayla sonlanır.Gem çalıştırılırken ... ["extconf.rb", ...] dosyalar dosya değil
Taş oluşturmak için aynı dizin yapısıyla, here numaralı gönderiyi kullanıyorum.
Yapılandırmamda neyin var? Benim gemspec ve Rakefile izimin altındadır (mücevher netconf olarak adlandırılır).
Ben git ile Güncellemelerimi kararlı değil çünkü bu hata var
** Execute copy:netconf:i686-linux:1.9.2
install -c tmp/i686-linux/netconf/1.9.2/netconf.so lib/netconf/netconf.so
** Execute compile:netconf:i686-linux
** Execute compile:i686-linux
** Execute compile
** Invoke chmod (first_time)
** Execute chmod
** Execute build
rake aborted!
ERROR: While executing gem ... (Gem::InvalidSpecificationException)
["extconf.rb", "netconf.o", "netconf.so"] are not files
// netconf.gemspec
# -*- encoding: utf-8 -*-
$:.push File.expand_path("../lib", __FILE__)
require "netconf/version"
Gem::Specification.new do |s|
s.name = "netconf"
s.version = Netconf::VERSION
s.authors = ["..."]
s.email = ["..."]
s.homepage = "..."
s.summary = %q{A tool to access and write Ubuntu network configuration}
s.description = %q{Uses ifconfig and other C system calls to access network configurations on a Ubuntu install.}
s.rubyforge_project = "netconf"
s.files = `git ls-files`.split("\n")
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
s.require_paths = ["lib"]
s.extensions = ["ext/netconf/extconf.rb"]
end
// Rakefile
require 'rake'
require 'rake/extensiontask'
require 'bundler'
Rake::ExtensionTask.new("netconf") do |extension|
extension.lib_dir = "lib/netconf"
end
task :chmod do
File.chmod(0775, 'lib/netconf/netconf.so')
end
task :build => [:clean, :compile, :chmod]
Bundler::GemHelper.install_tasks
[This] (http://stackoverflow.com/questions/1314827/how-do-i-wrap-up-a-ruby-c-extension-in-a-ruby-gem) ilgili olabilir –
I bu soruyu gördü; başın için teşekkürler. Komisyon-derleyici kullanıyorum, ancak bu özel hata hakkında herhangi bir bilgi bulamadım (ve tek bir gömülü platformu hedeflediğim için yerel bir C uzantısına ihtiyacım var/istediğimden eminim). –