私は現在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シンボルがロードされなかったのですか?