27

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

プロジェクトで、ビルド時に次のエラーが発生するようになりました。

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

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

4

12 に答える 12

15

プロジェクト設定の編集->ビルドタブ->MacOS X展開ターゲットの場合、XCode 3の場合は10.5に変更し(10.6の場合でも10.6ではありません)、それが役立つかどうかを確認します。

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

PSリリースやデバッグだけでなく、すべてのターゲットに設定してください。(もしあなたがそうしなかったら、一方は失敗し、もう一方は失敗しませんでした)

于 2009-09-03T02:30:41.287 に答える
11

~/.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
于 2009-12-31T11:16:12.167 に答える
6

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

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

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

于 2009-10-26T19:51:51.020 に答える
3

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

于 2009-09-01T23:58:43.583 に答える
2

コンパイラは通常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
    

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

解決策 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
于 2013-04-19T10:43:17.117 に答える
2

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

于 2011-11-15T09:43:18.537 に答える
1

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

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

例えば、

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

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

于 2012-03-15T05:55:29.120 に答える
1

同じエラー メッセージが表示されました。上記の解決策はどれもうまくいきませんでした。xcodeproj ファイル内の *.pbxuser および *.mode1v3 ファイルを削除して解決しました。

  1. xcode *.xcodeproj ファイルをコントロール/クリック
  2. メニューから「パッケージの内容を表示」オプションを選択します
  3. ウィンドウが開き、内容が表示されます
  4. ユーザー名で始まる pbxuser/mode1v3 ファイルを削除します。
  5. プロジェクトを再構築する
于 2011-05-04T16:51:18.237 に答える
1

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

興味深いことに、私にとって問題は Simulator-Debug のみでした。Simulator-Release または Device Debug/Release に不満はありませんでした。

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

于 2009-09-04T08:51:31.663 に答える
1

この問題は、Mac OS X Deployment Target を 10.5 に設定し、その後 Compiler Default に戻すことで解決しました :)

于 2011-03-22T09:24:09.267 に答える
1

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

MACOSX_DEPLOYMENT_TARGET = 10.6;

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

MACOSX_DEPLOYMENT_TARGET = 10.5;

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

于 2011-03-30T04:49:07.073 に答える
0
~/.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 の作成者) による回答を見たことがありますが、彼はシンボリック リンクを使用してこの特定の問題を修正しました (ちなみに、誰かがこのページを参照しました)。

于 2010-09-09T16:56:36.433 に答える