2011-12-13 1 views
1

나는 http://people.apache.org/~rooneg/talks/ruby-extensions/ruby-extensions.html (6 페이지)에 대한 지침과 내 make 명령은 make: Nothing to be done for 'all'.루비 extconf.rb 예를

사람이 어떤 아이디어가 있습니까 반환을 다음 무엇입니까?

내가 루비 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

당신의 메이크가 추가 게시하시기 바랍니다 ... 내가 무엇을 의미하고 찾고되는이 포함된다? – Coderama

답변

5
all: Makefile 

이 문자열이 잘못 해요, all 대상 확장을, 그리고 메이크 자체합니다.

all: $(DLLIB) 

당신이 동일해야합니다 : 여기 내 시스템에 임의의 extconf.rb에서 생성 된 메이크 파일의 일부입니다. 가능한 오류는 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'를 실행 한 다음'make'를 실행하십시오 –

+0

그게 전부입니다! hello.c 파일을 같은 디렉토리에 만들고이 두 명령을 모두 재어 넣으면 작동했습니다! 고맙습니다! – Coderama