0

Mac で古いコードを受け取り、OS X 10.6 でコンパイルしようとしましたが、コードには OpenSSL ライブラリ (SSL_write() など) への呼び出しがほとんどありません。これらのファイルにヘッダー (#include ) を追加し、 OpenSSLのバージョンは「0.9.8r」を示しています(Appleがこのライブラリ暗号用の独自のフレームワークを持っていることは知っています)が、なぜ次のようにリンクエラーが発生するのですか:

  sockets::TcpSocket::TryWrite(char const*, unsigned long) in TcpSocket.o

このライブラリに対してコードをコンパイルする必要があることはわかっています/usr/libが、そうではありません。Xcode でパスやその他の設定が不足していますか?

4

1 に答える 1

1

/usr/bin にはライブラリがありません。/usr/lib のことだと思います。ただし、通常は /usr/lib に対してコンパイルしません。通常は、/usr/lib と /usr/include の独自のコピーを持つ特定の SDK に対してコンパイルします。使用する SDK ヘッダー ファイルは、通常、-isysrootパラメーターで渡されます。Xcode でビルドしている場合、これらの設定は主に「ベース SDK」と「OS X 展開ターゲット」を介して設定されます。あなたがどのように構築しているかの詳細がなければ、私はあなたをどこに向けるべきか確信が持てません. 特に、関連ファイルのコンパイル行とリンク行はどのように見えるでしょうか?


Xcode では、特定のシステム ライブラリに対してパスでリンクしようとしないでください。ビルド設定のリンク フェーズ パネルを使用し、ライブラリの SDK リストから選択して、常にシステム ライブラリにリンクする必要があります。リンク フェーズ パネルで特定のパスを選択すると、ほとんどの場合、問題が発生します。

于 2012-10-24T00:47:34.113 に答える