竜芯8089 D-Debian 7の下でObjective-Cコンパイル環境を構築する

2598 ワード

竜芯8089 D-Debian 7の下でObjective-Cコンパイル環境を構築する
目次
  • インストール関連ファイル
  • コンパイルパラメータ説明
  • 簡略化コマンドラインパラメータ
  • 実際のコンパイル例
  • 簡単な説明:Objective-CのCファイル接尾辞は.m、ヘッダファイル接尾辞は.hです.たとえば、このチュートリアルのインスタンスはmain.mです.
    関連ファイルのインストール
    これらのパッケージをインストールする必要があります:gccg++gobjcgnustepgnustep-develgnustep-gui-devlibgnustep-base-dev.
    インストールコマンドは簡単です.
    apt-get install gcc g++ gobjc gnustep gnustep-devel gnustep-gui-dev libgnustep-base-dev
    

    インストールが完了したら、次のステップに進みます.
    コンパイルパラメータの説明
    異なるリリースのLinuxの下でObjective-Cをコンパイルするコマンドパラメータは少し異なり、Debianの下でこれらのパラメータが必要です.
    `gnustep-config --objc-flags`
    -fconstant-string-class=NSConstantString
    -lobjc
    -lgnustep-base
    

    また、ヘッダファイル(includeファイル)とライブラリファイル(libファイル)の位置を指定する必要があります.Debianの下で、それらの位置はそれぞれ/usr/include/GNUstep//usr/lib/GNUstep/で、パラメータは以下の通りです.
    -I /usr/include/GNUstep/
    -L /usr/lib/GNUstep/
    

    上記のパラメータを統合したコンパイルコマンドは以下のとおりです.
    gcc `gnustep-config --objc-flags` -fconstant-string-class=NSConstantString -lobjc -lgnustep-base -I /usr/include/GNUstep/ -L /usr/lib/GNUstep/ -o main main.m
    

    しかし、こんなに多くのパラメータを入力するたびに煩雑になります.次に、この長いコマンドを別名aliasに設定します.
    コマンドラインパラメータの簡略化
    エイリアスを作成するコマンドは次のとおりです.
    alias objcc='gcc `gnustep-config --objc-flags` -fconstant-string-class=NSConstantString -lobjc -lgnustep-base -I /usr/include/GNUstep/ -L /usr/lib/GNUstep/'
    

    このコマンドをシステムの~/.bashrcファイルに保存するには、簡単です.このコマンドを.bashrcにコピーすればいいです.それから実行します.
    source ~/.bashrc
    

    その後、Objective-Cファイルをコンパイルすると、別名objccが使用できます.簡単です.
    objcc -o main main.m
    

    注意:この別名コマンドでは、それぞれ'、``を使用しています.混同しないでください.
    実際のコンパイルインスタンス
    最後に、実際のObjective-Cプログラムの例で説明します.以下は、我々のルーチンmain.mの内容です.
    #import <Foundation/Foundation.h>
    int main(int argc,const char * argv[])
    {
        NSLog(@"hello world!");
        return(0);
    }
    

    上記のコードをmain.mに保存して実行します.
    objcc -o main main.m
    

    現在のディレクトリの下には、mainという実行可能ファイルが生成されます.
    なお、この実行可能ファイルはDebianでのみ実行でき、DebianOSXで実行可能な実行可能ファイルをコンパイルするには、追加のクロスコンパイルパラメータが必要である場合は、ここでは詳細に説明しない.