2011-12-13 78 views
1

我下面給http://people.apache.org/~rooneg/talks/ruby-extensions/ruby-extensions.html(第6頁)的說明,我的make命令只返回make: Nothing to be done for 'all'.紅寶石extconf.rb例如

有沒有人有什麼想法?

我使用Ruby 1.9.2和我在OSX 10.6.8

SHELL = /bin/sh 

#### Start of system configuration section. #### 

srcdir = . 
topdir = /Users/pcoder/.rvm/rubies/ruby-1.9.2-p290/include/ruby-1.9.1 
hdrdir = /Users/pcoder/.rvm/rubies/ruby-1.9.2-p290/include/ruby-1.9.1 
arch_hdrdir = /Users/pcoder/.rvm/rubies/ruby-1.9.2-p290/include/ruby-1.9.1/$(arch) 
VPATH = $(srcdir):$(arch_hdrdir)/ruby:$(hdrdir)/ruby 
prefix = $(DESTDIR)/Users/pcoder/.rvm/rubies/ruby-1.9.2-p290 
rubylibprefix = $(libdir)/$(RUBY_BASE_NAME) 
exec_prefix = $(prefix) 
vendorhdrdir = $(rubyhdrdir)/vendor_ruby 
sitehdrdir = $(rubyhdrdir)/site_ruby 
rubyhdrdir = $(includedir)/$(RUBY_BASE_NAME)-$(ruby_version) 
vendordir = $(rubylibprefix)/vendor_ruby 
sitedir = $(rubylibprefix)/site_ruby 
ridir = $(datarootdir)/$(RI_BASE_NAME) 
mandir = $(datarootdir)/man 
localedir = $(datarootdir)/locale 
libdir = $(exec_prefix)/lib 
psdir = $(docdir) 
pdfdir = $(docdir) 
dvidir = $(docdir) 
htmldir = $(docdir) 
infodir = $(datarootdir)/info 
docdir = $(datarootdir)/doc/$(PACKAGE) 
oldincludedir = $(DESTDIR)/usr/include 
includedir = $(prefix)/include 
localstatedir = $(prefix)/var 
sharedstatedir = $(prefix)/com 
sysconfdir = $(prefix)/etc 
datadir = $(datarootdir) 
datarootdir = $(prefix)/share 
libexecdir = $(exec_prefix)/libexec 
sbindir = $(exec_prefix)/sbin 
bindir = $(exec_prefix)/bin 
rubylibdir = $(rubylibprefix)/$(ruby_version) 
archdir = $(rubylibdir)/$(arch) 
sitelibdir = $(sitedir)/$(ruby_version) 
sitearchdir = $(sitelibdir)/$(sitearch) 
vendorlibdir = $(vendordir)/$(ruby_version) 
vendorarchdir = $(vendorlibdir)/$(sitearch) 

CC = gcc 
CXX = g++ 
LIBRUBY = $(LIBRUBY_SO) 
LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a 
LIBRUBYARG_SHARED = -l$(RUBY_SO_NAME) 
LIBRUBYARG_STATIC = -l$(RUBY_SO_NAME)-static 
OUTFLAG = -o 
COUTFLAG = -o 

RUBY_EXTCONF_H = 
cflags = $(optflags) $(debugflags) $(warnflags) 
optflags = -O3 
debugflags = -ggdb 
warnflags = -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long 
CFLAGS = -fno-common -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch x86_64 -fno-common -pipe 
INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir)/ruby/backward -I$(hdrdir) -I$(srcdir) 
DEFS  = 
CPPFLAGS = -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE $(DEFS) $(cppflags) 
CXXFLAGS = $(CFLAGS) $(cxxflags) 
ldflags = -L. -Wl,-syslibroot /Developer/SDKs/MacOSX10.6.sdk -arch x86_64 
dldflags = -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -Wl,-flat_namespace 
ARCH_FLAG = 
DLDFLAGS = $(ldflags) $(dldflags) 
LDSHARED = $(CC) -dynamic -bundle 
LDSHAREDXX = $(CXX) -dynamic -bundle 
AR = ar 
EXEEXT = 

RUBY_BASE_NAME = ruby 
RUBY_INSTALL_NAME = ruby 
RUBY_SO_NAME = ruby.1.9.1 
arch = x86_64-darwin10.7.0 
sitearch = $(arch) 
ruby_version = 1.9.1 
ruby = /Users/pcoder/.rvm/rubies/ruby-1.9.2-p290/bin/ruby 
RUBY = $(ruby) 
RM = rm -f 
RM_RF = $(RUBY) -run -e rm -- -rf 
RMDIRS = $(RUBY) -run -e rmdir -- -p 
MAKEDIRS = mkdir -p 
INSTALL = /usr/bin/install -c 
INSTALL_PROG = $(INSTALL) -m 0755 
INSTALL_DATA = $(INSTALL) -m 644 
COPY = cp 

#### End of system configuration section. #### 

preload = 

libpath = . $(libdir) 
LIBPATH = -L. -L$(libdir) 
DEFFILE = 

CLEANFILES = mkmf.log 
DISTCLEANFILES = 
DISTCLEANDIRS = 

extout = 
extout_prefix = 
target_prefix = 
LOCAL_LIBS = 
LIBS = $(LIBRUBYARG_SHARED) -lpthread -ldl -lobjc 
SRCS = 
OBJS = 
TARGET = 
DLLIB = 
EXTSTATIC = 
STATIC_LIB = 

BINDIR  = $(bindir) 
RUBYCOMMONDIR = $(sitedir)$(target_prefix) 
RUBYLIBDIR = $(sitelibdir)$(target_prefix) 
RUBYARCHDIR = $(sitearchdir)$(target_prefix) 
HDRDIR  = $(rubyhdrdir)/ruby$(target_prefix) 
ARCHHDRDIR = $(rubyhdrdir)/$(arch)/ruby$(target_prefix) 

TARGET_SO  = $(DLLIB) 
CLEANLIBS  = $(TARGET).bundle 
CLEANOBJS  = *.o *.bak 

all: Makefile 
static: $(STATIC_LIB) 
.PHONY: all install static install-so install-rb 
.PHONY: clean clean-so clean-rb 

clean-rb-default:: 
clean-rb:: 
clean-so:: 
clean: clean-so clean-rb-default clean-rb 
     @-$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES) 

distclean-rb-default:: 
distclean-rb:: 
distclean-so:: 
distclean: clean distclean-so distclean-rb-default distclean-rb 
     @-$(RM) Makefile $(RUBY_EXTCONF_H) conftest.* mkmf.log 
     @-$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES) 
     @-$(RMDIRS) $(DISTCLEANDIRS) 

realclean: distclean 
install: install-so install-rb 

install-so: Makefile 
install-rb: pre-install-rb install-rb-default 
install-rb-default: pre-install-rb-default 
pre-install-rb: Makefile 
pre-install-rb-default: Makefile 

site-install: site-install-so site-install-rb 
site-install-so: install-so 
site-install-rb: install-rb 
+1

請張貼在這裏添加您的 –

+0

...的Makefile我是什麼意思我要尋找什麼? – Coderama

回答

5
all: Makefile 

這個字符串是錯誤的,all目標應該讓你的擴展,而不是一個Makefile本身。 這裏是從隨機extconf.rb我的系統上生成的Makefile的一部分:

all: $(DLLIB) 

你應該是相同的。可能的錯誤是extconf.rb

我extconf.rb:

require 'mkmf' 

have_header('ruby.h') or missing('ruby.h') 
create_makefile('ext') 

文件ext.c & ext.h被presend和包含實際的擴展C代碼

+0

您是否在我的初始文章中查看了鏈接的第6頁?我遵循了那個問題。在那個鏈接中,它也顯示了extconf.rb的內容。感謝您花時間看看這個! – Coderama

+1

好的,我想我找到了。你沒有創建一個'hello.c'文件。你是否?創建一個'hello.c'文件(空白確定),然後運行'ruby extconf.rb',然後'製作' –

+0

就是這樣!一旦我在同一個目錄中創建hello.c文件並重新執行這兩個命令,它就起作用了!謝謝! – Coderama