webdevqa.jp.net

Xcodeプロジェクトのエラー:ld:-lcrt1.10.6.oのライブラリが見つかりません

Snow Leopardにアップグレードし、Xcode 3.2をインストールしてから、SL用のiPhone SDK 3をインストールしました。

プロジェクトでは、ビルド時に次のエラーが発生します。

ld-lcrt1.10.6.oのライブラリが見つかりません

私はネットを検索しましたが、役に立つものは何も見つかりません。

26
kindaran

プロジェクト設定の編集->ビルドタブで-> Mac OS X Deployment Targetの場合、XCode 3で10.5(10.6であっても10.6ではない)に変更し、それが役立つかどうかを確認します。

XCode 4の場合、10.6に設定する必要があります

追伸リリースまたはデバッグだけでなく、すべてのターゲットに設定してください。 (そうしなかった場合、1つは失敗し、もう1つは失敗しません)

15
Headrush69

以下を〜/ .profileに追加します(Mac OS X 10.5の場合):

export C_INCLUDE_PATH=/Developer/SDKs/MacOSX10.5.sdk/usr/include
export LIBRARY_PATH=/Developer/SDKs/MacOSX10.5.sdk/usr/lib
11
Stefan

Makefileに以下を追加することで、この問題を修正できました。

CFLAGS="$(OTHER_CFLAGS) -mmacosx-version-min=10.5"
LDFLAGS="$(OTHER_LDFLAGS) -mmacosx-version-min=10.5"

表向きは、これはXcodeの外部でビルドする場合にのみ必要です。この問題は長い間私を苛立たせ、ここで私の経験を共有することが役立つと考えました。

6
user196865

/ usr/libからライブラリを選択しているようですが、これはiPhone SDKにはまったく不適切です。ビルド設定を変更して、ライブラリ検索パスに/ usr/libを追加したと思います。/usr/libはコンパイラの標準の検索パスにあるため、そもそもこれはまったく必要ありませんが、このような検索パスを変更する必要がある場合は、代わりに$(SDKROOT)/usr/libを使用してください。

3
Lily Ballard

デプロイメントターゲットをコンパイラのデフォルトに設定すると、問題が解決しました。何も変更しないでください。

2
ashna

コンパイラは通常、crt1.oをcrt [i/n] .oおよびcrt [begin/end] .oと組み合わせて使用​​して、コンストラクターとデストラクター(mainおよびexitの前後に呼び出される関数)をサポートします。

このエラーは、特定の展開ターゲットのライブラリファイルが見つからないことが原因である可能性があります。

まず、次のような調査を行います。

  1. すべての展開ターゲットをリストします。

    ls -la /Developer/SDKs
    
  2. どのcrt1ライブラリをどの環境で使用しているかを見つけます

    find /Developer/SDKs -name crt1\*
    

    次のように表示されます。

    /Developer/SDKs/MacOSX10.5.sdk/usr/lib/crt1.10.5.o
    /Developer/SDKs/MacOSX10.5.sdk/usr/lib/crt1.o
    /Developer/SDKs/MacOSX10.6.sdk/usr/lib/crt1.10.5.o
    /Developer/SDKs/MacOSX10.6.sdk/usr/lib/crt1.10.6.o
    /Developer/SDKs/MacOSX10.6.sdk/usr/lib/crt1.o
    

上記の例でわかるように、MacOSX10.5ではcrt1.10.6.oがありません。

解決策1

これを解決するには、他の環境を指す欠落ファイルへのリンクを作成するか、展開ターゲットを変更します。例えば。

ln -s /Developer/SDKs/MacOSX10.6.sdk/usr/lib/crt1.10.6.o /Developer/SDKs/MacOSX10.5.sdk/usr/lib/

欠落している他の理由は、システムに異なるgccがインストールされている可能性があることです。例えば。:

which gcc
xcrun -find gcc
brew list | grep gcc; brew list gcc47

解決策2

したがって、makeを使用してコンパイルする場合、実際にはCC変数によって適切なコンパイラを指定できます。例えば。

CC=/path/to/gcc-3.4 make

解決策3

また、gccに適切なターゲットデプロイメント環境変数を指定することもできます。例:

export MACOSX_DEPLOYMENT_TARGET=10.5

これが機能する場合、このライブラリパスをシェルプロファイル(~/.profile)に追加できます。例えば。

export C_INCLUDE_PATH=/Developer/SDKs/MacOSX10.5.sdk/usr/include

export LIBRARY_PATH=/Developer/SDKs/MacOSX10.5.sdk/usr/lib

または、一時的にエクスポートします。


テスト方法

次のコードでサンプルconftest.cファイルを作成します。

#ifdef __GNUC__
  yes;
#endif

そして、それを介してコンパイルしてみてください:

gcc conftest.c
cc conftest.c
cc conftest.cc conftest.c
2
kenorb

Fortran Makefileでも同じ問題がありました。コンパイラーの後に次のオプションを追加しました(OSX 10.5の場合):

-L/Developer/SDKs/MacOSX10.5.sdk/usr/lib

例えば。、

g77 -L/Developer/SDKs/MacOSX10.5.sdk/usr/lib

これで、コンパイラは必要なライブラリを見つけます!

1
user1270809

あるマシンでXcode 4を使用し、別のマシンでXcode 3.2.6を使用していたときに、この問題が発生しました。 2つのバージョンは.xcodeprojファイルをそれらの間で交換できるはずですが、project.pbxprojファイル(.xcodeprojディレクトリ内)には、次の場所がまだあることがわかりました。

MACOSX_DEPLOYMENT_TARGET = 10.6;

Xcodeを終了し、3つのオカレンスを次のように変更しました。

MACOSX_DEPLOYMENT_TARGET = 10.5;

プロジェクトを再開した後、再びビルドできました。ふう!

1
Ben Golding

これで数時間を無駄にした...

興味深いことに、私にとって問題はシミュレーターデバッグのみでした。 Simulator-ReleaseやDevice Debug/Releaseに不満はありませんでした!

とにかく、展開ターゲットを10.5に変更すると、これが解決しました!!

1
prakash

同じエラーメッセージが表示されましたが、上記の解決策はどれも役に立ちませんでした。 xcodeprojファイル内の* .pbxuserおよび* .mode1v3ファイルを削除することで解決しました。

  1. Xcode * .xcodeprojファイルを制御/クリックします
  2. メニューから「パッケージの内容を表示」オプションを選択します
  3. ウィンドウが開き、内容が表示されます
  4. ユーザー名で始まるpbxuser/mode1v3ファイルを削除します
  5. プロジェクトをリビルドする
1
Geoff Smith

この問題は、Mac OS X Deployment Targetを10.5に設定し、その後コンパイラのデフォルトに戻す :)で解決しました

1
beryllium
次を〜/ .profileに追加します(Mac OS X 10.5の場合):

export C_INCLUDE_PATH=/Developer/SDKs/MacOSX10.5.sdk/usr/include

export LIBRARY_PATH=/Developer/SDKs/MacOSX10.5.sdk/usr/lib

Kirandanの限られたシナリオ(Snow Leopard、Xcode 3.2.1、iphone、ライブラリパスエラー)を考えると、10.5(-lcrt1.10.5.o)を除いて、Stefanの答え(上記)が役に立ちました。

他の場所では、Gabor Cselle(reMailの著者)の回答を見ましたが、シンボリックリンクを使用してこの特定の問題を修正しました(ちなみに、誰かがこのページを参照しました)。

0
michaelok