7

OSXの開発環境には、フレームワークの概念があります。フレームワークは、ヘッダー、共有ライブラリ、その他の便利なものを含む一種のバンドルです。フレームワークをコンパイラーに渡すことができるため、コンパイラーはそのヘッダーを検索パスに含め、その共有ライブラリーを使用してプログラムをそれらに対してリンクします。

したがって、たとえば、-framework FrameworkNameがOSXのgccまたはclangに渡された場合、コンパイラはディレクトリを検索して/System/Library/Frameworksディレクトリを見つけますFrameworkName.framework。見つかった場合、コンパイラはヘッダーを含め、プログラムを共有ライブラリにリンクします。

では、この非常に便利な機能はLinuxで機能しますか?gccまたはclangは-frameworkLinuxのオプションを認識しますか?Linuxでこのオプションを入力すると、コンパイラはそれを認識しないようですが、これはおそらく、その前にフレームワークのディレクトリパスを設定する必要があるためです。Linuxで動作させるための特別なトリックはありますか?それとも、このプラットフォームでは絶対に不可能ですか?

4

3 に答える 3

4

いいえ、Linuxでは動作しません。フレームワークは、(OS X)Mach-OABIの機能です。理論的には、Mach-Oサポート用のカーネルモジュールを作成し、リンカー/ローダーユーザースペースツールを提供することができます。大変な作業になります。

于 2013-03-09T13:43:46.380 に答える
3

私はFreeBSDで使用しているので、はいフレームワークはLinuxで動作するはずです。フレームワークは、ヘッダー、リソース、およびlibファイル用の自己完結型フォルダーです。libはELF形式にすることができ、mach-oサポートは必要ありません。

ですから、それはあなたが何をしたいかによります。

  • Cocoaフレームワークを使用したい場合は、おそらくLinuxでは使用できません。ただし、Foundationフレームワークでオブジェクトを探している場合は、GNUStepをインストールすることでオブジェクトを取得できます。

  • 独自のフレームワークを構築したい場合も可能です。GNUStepには、そのためのヘルパーmakefileがあります。

于 2013-11-06T09:42:55.810 に答える
-1

この引用は、次のようなプログラムのために、さまざまなプラットフォームでOpenCLコードをコンパイルする方法を示していますuser_buffer

「OSXでは、端末で次のコマンドを実行してプログラムをコンパイルします。

gcc -std=c99 -Wall -DUNIX -g -DDEBUG -DAPPLE -arch i386 -o user_buffer user_buffer.c \
-framework OpenCL

IntelOpenCLSDKを搭載したUbuntuLinux12.04では、コマンドは次のようになります。

gcc -std=c99 -Wall -DUNIX -g -DDEBUG -m64 -o user_buffer user_buffer.c -I . -I /usr/include \
-L/usr/lib64/OpenCL/vendors/intel -lintelocl -ltbb -ltbbmalloc -lcl_logger -ltask_executor

AMD APPSDKv2.8を搭載したUbuntuLinux12.04では、コマンドは次のようになります。

gcc -std=c99 -Wall -DUNIX -g -DDEBUG –m64 -o user_buffer user_buffer.c \
-I. –I/opt/AMDAPP/include –L/opt/AMDAPP/lib/x86_64 –lOpenCL

https://www.academia.edu/22200475OpenCL_Parallel_Programming_Development_Cookbookから

Linux上のNvidiaOpenCLSDKの場合、「vectoradd」というプログラムの場合:

g++ -I ~/NVIDIA_GPU_Computing_SDK/OpenCL/common/inc/ -lOpenCL vectoradd.cpp –o vectoradd

https://uloz.to/!nY4NzLAG/nvidia-opencl-examples-cuda-4-2-9-sdk-zipから入手可能なNvidiaOpenCLスタートガイドから

于 2016-11-09T16:46:44.513 に答える