私は最近、MacにOpenGLプログラムを作成し、コンソールアプリケーションとして展開して他のMacユーザーに配布しようとしています。G ++:動的(dylib)ライブラリのリンク
プログラムはC++で書かれているので、g ++を使うことにしました。私のプログラムでは、OpenGLフレームワーク、GLFW、およびGLEWの使用が必要です。/usr/local/libフォルダにGLFWライブラリとGLEWライブラリがあり、/ usr/local/includeフォルダにヘッダファイルがあります。私のメインファイルはmain.cppです。 GLFW動的ロードライブラリはlibglfw.3.2.dylibと呼ばれ、GLEW動的ロードライブラリはlibGLEW.2.0.0.dylibと呼ばれます。
私はmain.cppにファイルのディレクトリから次のコマンドを使用して++グラムでコンパイル:
g++ -arch x86_64 -framework OpenGL -I/usr/local/include -L/usr/local/lib -o Main main.cpp -lglfw.3.2 -lGLEW.2.0.0
すべてが正しくコンパイルし、プログラムが実行されます。
ただし、絶対パス:/ usr/local/libを使用してライブラリをリンクします。つまり、実行可能ファイルを別のコンピュータに移動すると、そのファイルは実行されません。すべてのコンピュータにロードするには、dylibが必要です。
g++ -arch x86_64 -framework OpenGL -I/usr/local/include -L'$(CURDIR)' -o Main main.cpp -lglfw.3.2 -lGLEW.2.0.0
何らかの理由で、「$を認識していないようですので、これは動作しません。だから私は、私のmain.cppにファイルを持っているフォルダに移動し、私の現在のディレクトリにリンクする$(CURDIR)
を使用してみました(CURDIR) 'をカレントディレクトリとして使用するか、または使用する有効な変数ではない可能性があります。
実行ファイルを任意のコンピュータに移動して動作させるために、私のdylibをリンクする方法を探しています。
ご協力いただければ幸いです。
どのように動作しませんか? –
単に現在のディレクトリのパスとしてパスを認識しません。 –
本当にわかりませんが、-L '$(CURDIR)'から引用符を削除してみてください。私のMSYSシェル(Windows上)で、引用符を残すと、(少なくともエコーで)変数を展開していないようです。かっこも削除してみてください。 –