2011-07-24 6 views
0

私は現在iPhone toolchainを使って開発したiPhoneアプリケーションをビルドしようとしています。私はそれが私の.oファイルを一緒にロードしようとしたとき、それは私にこのエラーを与えていたメイクファイルの作成が完了すると:iPhoneのメイクファイルが最後の引用を落とす

/bin/sh: -c: line 0: unexpected EOF while looking for matching `"' 
/bin/sh: -c: line 1: syntax error: unexpected end of file 

それが実行しようとしていたシェルコードを見ている時に、私はそれが最後の引用を落としたと判断しました私は私のmakefileをすばやく修正しました。ロード時に、それは私に次のエラーを与えた:

未定義のシンボル:私はこれを読めば

"_main", referenced from: 
     __start in crt1.10.5.o 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 
make: *** ["Autotune] Error 1 

は正しくそれが私の主な機能を見つけることができませんが、それは明確にmain.mm.で定義されていますプロジェクトを閉鎖したままにしたいと思いますが、コードの重要ではない部分を表示したいと思います。なぜそれがコンパイルされていないのかわかりません。それはXcode上でうまくいった。 Makefileを変更しても何とか_mainシンボルがロードされなかったのですか?この問題を解決するにはどうすればよいですか?私はかなり困惑している。ここで

は私のMakefileです:

PROJECTNAME="MyAppName" 
APPFOLDER=$(PROJECTNAME).app 
INSTALLFOLDER=$(PROJECTNAME).app 

CC=arm-apple-darwin9-gcc 
LD=$(CC) 
LDFLAGS = -arch arm -lobjc 
LDFLAGS += -framework CoreFoundation 
LDFLAGS += -framework Foundation 
LDFLAGS += -framework UIKit 
LDFLAGS += -framework QuartzCore 
LDFLAGS += -framework CoreGraphics 
LDFLAGS += -framework CoreAudio 
LDFLAGS += -framework AudioToolbox 
LDFLAGS += -framework AVFoundation 
LDFLAGS += -L"/usr/lib" 
LDFLAGS += -F"/System/Library/Frameworks" 
LDFLAGS += -F"/System/Library/PrivateFrameworks" 
LDFLAGS += -bind_at_load 
LDFLAGS += -multiply_defined suppress 

CFLAGS = -I"/var/include" 
CFLAGS += -I"/usr/include" 
CFLAGS += -I"/var/include/c++/4.0.0" 
CFLAGS += -I"/var/include/c++/4.0.0/arm-apple-darwin9" 
CFLAGS += -I"./Classes" 
CFLAGS += -F"/System/Library/Frameworks" 
CFLAGS += -F"/System/Library/PrivateFrameworks" 
CFLAGS += -DDEBUG -Wall 
CFLAGS += -DMAC_OS_X_VERSION_MAX_ALLOWED=1050 

BUILDDIR=./build/2.0 
SRCDIR=./Classes 
RESDIR=./Resources 
OBJS=$(patsubst %.m,%.o,$(wildcard $(SRCDIR)/*.m)) 
OBJS+=$(patsubst %.mm,%.o,$(wildcard $(SRCDIR)/*.mm)) 
OBJS+=$(patsubst %.c,%.o,$(wildcard $(SRCDIR)/*.c)) 
OBJS+=$(patsubst %.cpp,%.o,$(wildcard $(SRCDIR)/*.cpp)) 
RESOURCES=$(wildcard $(RESDIR)/*) 

all: dist 

CFLAGS += -include Prefix.h 


$(PROJECTNAME): $(OBJS) 
    $(LD) $(LDFLAGS) -o [email protected] $^ 

%.o: %.m 
    $(CC) -c $(CFLAGS) $< -o [email protected] 

%.o: %.mm 
    $(CC) -c $(CFLAGS) $< -o [email protected] 

%.o: %.c 
    $(CC) -c $(CFLAGS) $< -o [email protected] 

%.o: %.cpp 
    $(CC) -c $(CFLAGS) $< -o [email protected] 

dist: $(PROJECTNAME) 
    /bin/rm -rf $(BUILDDIR) 
    /bin/mkdir -p $(BUILDDIR)/$(APPFOLDER) 
    /bin/cp $(RESDIR)/* $(BUILDDIR)/$(APPFOLDER) 
    /bin/cp Info.plist $(BUILDDIR)/$(APPFOLDER)/Info.plist 
    @echo "APPL????" > $(BUILDDIR)/$(APPFOLDER)/PkgInfo 
    /usr/bin/ldid -S $(PROJECTNAME) 
    /bin/cp $(PROJECTNAME) $(BUILDDIR)/$(APPFOLDER) 

install: dist 
    /bin/cp -r $(BUILDDIR)/$(APPFOLDER) /Applications/$(INSTALLFOLDER) 
    @echo "Application $(INSTALLFOLDER) installed" 
    killall SpringBoard 

uninstall: 
    /bin/rm -fr /Applications/$(INSTALLFOLDER) 
    killall SpringBoard 

reinstall: dist 
    /bin/rm -fr /Applications/$(INSTALLFOLDER) 
    /bin/cp -r $(BUILDDIR)/$(APPFOLDER) /Applications/$(INSTALLFOLDER) 
    @echo "Application $(INSTALLFOLDER) installed" 

clean: 
    @rm -f $(SRCDIR)/*.o 
    @rm -rf $(BUILDDIR) 
    @rm -f $(PROJECTNAME) 

Prefix.hは、プリコンパイル済みヘッダーにするために使用が、私はちょうどヘッダファイルにそれを変更し、すべての私のソースに含める作る語ったことに注意することが重要ですファイル。

私は、最終的な引用符を含めないという問題のために作られたクイックフィックスだった:

交換:

$(PROJECTNAME): $(OBJS) 
    $(LD) $(LDFLAGS) -o [email protected] $^ 

へ:

$(PROJECTNAME): $(OBJS) 
    $(LD) $(LDFLAGS) -o [email protected] $^" 

はそのずっと後に私の質問を言い換えるするには役職。 Makefileを変更しても何とか_mainシンボルがロードされなかったのですか?

答えて

0

私はPROJECTNAMEによって与えられた私の実際のアプリ名にスペースがあったと考えました。スペースを削除してLDをapple-arm-darwin9-gccからapple-arm-darwin9-g ++に変更しました。その後、それは働いた。

関連する問題