MinGW(gcc)でDarknetをコンパイルする方法


Pure C言語でyoloを動かしてみたいと思い、ちょっと苦戦しましたができたので、メモとして残します。

まぁ、Windows&C言語でDarknet-yoloをやりたいって人がどれだけいるか分かりませんが・・・


MinGW編

MinGWとは、ザックリ言えば「Windows版gcc」のこと。

「WindowsでもLinuxと同じようにC言語やC++をコンパイルできるもの」って思ってください。

MinGWのインストール手順

近いうちMinGWのインストール手順は書いてみます。

とりあえずMinGW自体のインストール手順はいっぱいありますが、その中で(個人的に)一番分かりやすかった以下のURLを参照してください。

MinGWでpthreadを使えるようにする

上記のURLに従ってMinGWをインストールしたことを前提に記します。

  • [Windowsキー]を押して、スタートメニュを開き「mingw」と入力して、

  • 以下の手順を実行
1. 以下のタブを順番にクリック
「All Package」 → 「MinGW」 → 「MinGW Libraries」 → 「MinGW Standard Libraries」

2. 「MinGW Standard Libraries」にある、以下2つのチェックボックスを選択して、
   「Mark for Installation」を実行

  • チェックを入れたら「Installation」→「Apply Changes」を順番でクリックし、出てきたダイアログの「Apply」を実行

  • 念のため適当なCプログラムを作成し、#include <pthread.h> を記述してコンパイルが正常にできるか確認
test.c
#include <pthread.h>

int main(void) {
    return 0;
}
PS > gcc test.c
PS > # エラーが出なければOK

MinGW編 終わり


Darknet編

Darknetのダウンロード

gitコマンドを使えるようにしておいてください。

  • pjreddie/darknet より、以下のコマンドでソースコードをダウンロード
PS > git clone https://github.com/pjreddie/darknet.git

WindowsまたはLinux向けのDarknetもあるっぽいですが、今回はノンタッチ。
https://github.com/AlexeyAB/darknet

MinGWでDarknetコンパイル

  • ダウンロードしたdarknet -> examples -> go.cに、#include <winsock2.h>を追加

  • darknet -> Makefile を以下のように編集。
No. やること
1. LDFLAGS-lws2_32 を追加
2. mkdirのオプション-pを削除

objbackupresultsの3か所
  • 最後にdarknetフォルダ下でmingw32-make.exeコマンド(Linuxではmake)を実行。
PS > cd darknet
PS darknet> mingw32-make.exe

色々Warningが出るけど、大丈夫っぽい。

Darknet編 終わり