2011-08-28 13 views
6

Graphviz用の静的ライブラリをiOSアプリケーションに組み込むためにビルドしようとしていますが、動作させることができません。ここでは、graphviz 2.28.0、Xcode 4.1、OSX 10.7を使用して、これまで行ってきたことがあり、iOSシミュレータをターゲットにしています。iOS用静的Graphvizライブラリを構築する

は私がGlen Low's configure instructionsを見つけた、といくつかの情報に当て推量でこれらを更新:

./configure --build=i486-apple-darwin --host=arm-apple-darwin9 --disable-dependency-tracking --enable-shared=no --enable-static=yes --enable-ltdl-install=no --enable-ltdl=no --enable-swig=no --enable-tcl=no --with-codegens=no --with-fontconfig=no --with-freetype2=no --with-ipsepcola=yes --with-libgd=no --with-quartz=yes --with-visio=yes --with-x=no --with-cgraph=no CC="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2" CPP="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -E" CXX="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++-4.2" CXXCPP="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++-4.2 -E" OBJC="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2" LD="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ld" CPPFLAGS="-arch armv6 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk -miphoneos-version-min=4.0" CXXCPPFLAGS="-arch armv6 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk -miphoneos-version-min=4.0" 

これは動作しますが、その後、 "作る" しばらく走るとでエラーアウト:

Making all in gvpr 
    CCLD mkdefs 
ld: warning: ignoring file mkdefs.o, file was built for armv6 which is not the architecture being linked (i386) 
ld: warning: ignoring file /usr/local/lib/libSystem.dylib, missing required architecture i386 in file 
ld: warning: symbol dyld_stub_binder not found, normally in libSystem.dylib 
Undefined symbols for architecture i386: 
    "_exit", referenced from: 
     start in crt1.10.6.o 
    "_main", referenced from: 
     start in crt1.10.6.o 
ld: symbol(s) not found for architecture i386 
collect2: ld returned 1 exit status 
make[3]: *** [mkdefs] Error 1 
make[2]: *** [all-recursive] Error 1 
make[1]: *** [all-recursive] Error 1 
make: *** [all] Error 2 

Iすべてのアーキテクチャ仕様を理解していないので、これを動作させるためのあらゆる助けが大歓迎です。

答えて

0

リンカがあなたのMacにインストールされているシステムライブラリにリンクしようとしているようです。これらのライブラリはすべて、i386またはx86_64用にコンパイルされますが、これはiPhoneのライブラリをコンパイルするときには動作しません。リンカをiPhone SDKに付属のライブラリとリンクするように再設定する必要があります。

また、ライブラリをarmv6としてもう一度armv7として2回コンパイルする必要があることにも注意してください。 iPhone 3Gと古いiPod touchのいくつかはarmv6アーキテクチャを使用し、新しいiPhoneはarmv7アーキテクチャを使用します。両方のアーキテクチャでライブラリをコンパイルした後は、両方のアーキテクチャを持つ単一の静的ライブラリを作成するために、lipo(詳細はターミナルで "man lipo"とタイプしてください)を使用することができます。 iPhone/iPadシミュレータを使用してアプリケーションを開発する場合は、i386としてコンパイルすることをお勧めします。これにより、ライブラリをシミュレータで使用できるようになります。ここでも、lipoは、3つのすべてのアーキテクチャを持つ単一の静的ライブラリを作成できます。

今はGraphVizのWebサイトにアクセスできないので、ライブラリをダウンロードできず、configureスクリプトを実行できませんでしたが、 "make"を実行する前に、 makefileはconfigureスクリプトによって生成されます。ターゲットとしているiOS SDKのバージョンと、お使いのマシンに搭載されているgccのバージョンによっては、以下の変更のいくつかを自分の環境に適したものにする必要があるかもしれません。以下の手順はarmv6用に構築されます。そのアーキテクチャに取り組む準備が整ったら、armv7用に構築する設定を変更する必要があります。

検索CC = CCとのように変更します。CC = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2

はCFLAGで-arch i386のを見つけて、それを変更 : -arch ARMv6の

CFLAGを検索し、最初に追加!!:

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk -isysrootはSHARED_LDFLAGS = -arch i386の-dynamiclibを探しますそれを次のように変更してください。 SHARED_LDFLAGS = -arch armv6 -dynamiclib

+0

これが機能するかどうかは誰か確認できますか? –

1

問題は、作成後にmkdefsがビルドプロセス中に実行されるという問題です。したがって、armv6またはarmv7用にビルドした場合、ファイルはMac OS Xのコマンドラインで実行できません。私の回避策は、i386アーキテクチャー用のmkdefsをビルドして(これもiPhoneシミュレーターに必要です)、lib/gvprディレクトリに移動します。ファイルを上書きできないことを確認し、ビルドを再起動します。

2

私はこれを働かせました。ビルドスクリプトは、x86またはx86_64の代わりにi386用にコンパイルされているため、実行可能ファイルを作成しようとしたときに失敗しますが、すべてのライブラリはうまくいきます。

# For iPhoneOS 
export DEV_iOS=/Developer/Platforms/iPhoneOS.platform/Developer 
export SDK_iOS=${DEV_iOS}/SDKs/iPhoneOS5.0.sdk 
export COMPILER_iOS=${DEV_iOS}/usr/bin 
export CC=${COMPILER_iOS}/gcc 
export CXX=${COMPILER_iOS}/g++ 
export LDFLAGS="-arch armv7 -pipe -Os -gdwarf-2 -no-cpp-precomp -mthumb -isysroot ${SDK_iOS}" 
export CFLAGS=${LDFLAGS} 
export CXXFLAGS=${LDFLAGS} 
export LD=${COMPILER_iOS}/ld 
export CPP=${COMPILER_iOS}/llvm-cpp-4.2 
export AR=${COMPILER_iOS}/ar 
export AS=${COMPILER_iOS}/as 
export NM=${COMPILER_iOS}/nm 
export CXXCPP=${COMPILER_iOS}/llvm-cpp-4.2 
export RANLIB=${COMPILER_iOS}/ranlib 

./configure --host=arm-apple-darwin11 --disable-dependency-tracking --enable-shared=no --enable-static=yes --enable-ltdl-install=no --enable-ltdl=no --enable-swig=no --enable-tcl=no --with-codegens=no --with-fontconfig=no --with-freetype2=no --with-ipsepcola=yes --with-libgd=no --with-quartz=yes --with-visio=yes --with-x=no --with-cgraph=no 
+0

答えに基づいてhttp://stackoverflow.com/questions/10941247/graphviz-for-ios-build-with-xcode-4-3-fails-with-ld-errorをご覧ください –

関連する問題