2013-03-09 25 views
5

OSXの開発環境には、フレームワークという概念があります。フレームワークは、ヘッダー、共有ライブラリ、および他の有用なものを含む一種のバンドルです。フレームワークをコンパイラに渡すことができるので、コンパイラはヘッダーを検索パスに含め、その共有ライブラリを使用してプログラムをリンクします。GCC/Clangの-frameworkオプションはLinuxで動作しますか?

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

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

+1

これが最初に追加されたときに古いメーリングリストのチャタリングがあります。 Linuxで実際にどのようなフレームワークが何を意味するかについて何らかの合意が得られるまでは、OSX固有のものです。 – Joe

答えて

4

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

3

私はFreeBSDでそれを使用しているので、はいフレームワークはLinux上で動作するはずです。フレームワークは、ヘッダー、リソース、およびlibファイルのための単なる自己包含フォルダです。 libにはELF形式があり、mach-oサポートは必要ありません。

だから、あなたのやりたいことに依存します。

  • もしあなたがCocoaフレームワークを使いたいなら、あなたはおそらくLinux上にそれを持っていないでしょう。しかし、Foundationフレームワーク内のオブジェクトを探しているなら、GNUStepをインストールすることでそれを持つことができます。

  • 独自のフレームワークを構築したい場合は、それも可能です。 GNUStepでは、そのためのヘルパーメークファイルがいくつか見つかります。

+2

どうすればいいですか? clangやgcc(コマンドライン経由)で使うフレームワークの作り方に関する参考文献は見つけられませんでした。 – paulotorrens

0

この引用はuser_bufferと呼ばれるプログラムのために、異なるプラットフォーム上でのOpenCLコードをコンパイルする方法を示しています。

「OSX上で、あなたがあなたのターミナルで以下のコマンドを実行して、プログラムをコンパイルします:

インテルのOpenCL SDKとUbuntu Linuxの12.04で
gcc -std=c99 -Wall -DUNIX -g -DDEBUG -DAPPLE -arch i386 -o user_buffer user_buffer.c \ 
-framework OpenCL 

次のように、コマンドは次のようになります。

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 APP SDK v2のUbuntu Linux 12.04について。次のように8、コマンドは次のようになります。

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上のNvidiaのOpenCL SDKについては、 'vectoradd' と呼ばれるプログラムのために:

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

のNvidiaのOpenCLから取得します開始ガイド、 https://uloz.to/!nY4NzLAG/nvidia-opencl-examples-cuda-4-2-9-sdk-zip

関連する問題