2014年1月2日木曜日

Setting : MinGW and MSYS

元旦も、お仕事

画像処理径は、やっぱりCore i7で、高速処理するのが良い。

今までは、勉強不足でWindowsの開発環境と、Linuxの開発環境をそれぞれ作っていたのだけど、

Makwfileの変換ツールとか、ちょっとした小ネタのツールで、問題はなく相互で開発をしていた。

ただ、も一度考えると、無駄かなぁと考えて、

Eclips CDTの為に、インストールしていたMinGWで共通の環境を作ってみようと、

元旦に設定した時のメモ

POSIX thread も追加でインストール


(1) MinGWと、MSYSのインストール

これは、沢山説明しているサイトがあるので、そちらを見てチョンマゲ。

ただ、CDTを使うなら、C:\MinGWに、インストールする事

これも、忘れちゃダメよ

mingw-get update

mingw-get upgrad

mingw-get install xxxx              xxxxは、欲しいソフト

pkg-configは、下のURLから4つのパッケージをdownload、解凍しC:\mingwに上書き

http://www.gtk.org/download/win32.php

gettext-runtime
glib
gtk+
pkg-config

(2) MSYSの設定

起動時の環境変数、Aliasなどの設定

これは、.bashrcで行う。ついでに、

自分のサンプル

if [ -n "${PS1:-}" ]; then
    export PS1="\[\e]0;\w\a\]\n\[\e[35m\]\D{%H%M%S} \[\e[32m\]\u
\[\e[0m\]\n\$ "
fi

umask 22

export LC_ALL=C
export LANGUAGE=en_US.UTF-8

export C_INCLUDE_PATH=/e/opencv/build/include
export CPLUS_INCLUDE_PATH=/e/opencv/build/include
export LIBRARY_PATH=/e/opencv/build/x86/mingw/lib
export PKG_CONFIG_PATH=/e/opencv/build/x86/pkg-config

#ALIAS set
alias ls='ls --color=auto'
alias ll='ls -al'
alias l='ls'
alias h='history 100'
alias cdhttp='cd /var/http'

alias n='cd /home/Naoki;ls -al --color=auto'
alias rb='cd /f/robot/2W/2w/stereo'


ついでに、.profile

exec /bin/bash


(3) OpenCVのライブラリー

前の投稿で記述したMinGWのOpenCVの、ライブラリー名を変更
make などをすると、ライブラリーが無いとか、メッセージがでるので、

当該のライブラリーをコピーして、リネームする。

それぞれの人の環境で違うとおものうで、、、、手作業


(4) Makfileは、Linuxと同じものが使える

CDT上で開発するけど、結構、makeする事が多い。

MSYSは、bashシェル上が動くから、ちゃんとpkg-configも展開される。

ただし、opencvは、2.4.7から、mingw用ライブラリーは

自分でbuildしなければならなかった。

その時に、unix-installにできるopencv.pcは、WindowsのドライブがE:などのように

指定される。これは、これで良いのだが、Msys上では、E:は変換されない

従って、新たにpkg-configというディレクトリーを作って、

ドライブ指定を E: から /e/ に変更したopencv.pcを作っておく。

それをexport PKG_CONFIG_PATH=/e/opencv/build/x86/pkg-config と、

.bashrcで設定している。

これで、Mkafileは、Msys(Windows)と、Linuxで同じものが使える。

例えば、、、、

TARGET = pp
CC = g++
OBJS = $(TARGET).o
CFLAGS = -Wall -O2
LDFLAGS = -lm
OPENCVINC = `pkg-config --cflags opencv` -I/usr/include
OPENCVLIB = `pkg-config --libs opencv`

all:    $(TARGET)

$(TARGET):      $(OBJS)
        $(CC) -o $@ $(OBJS) $(LDFLAGS) $(OPENCVLIB)

.cpp.o:
        $(CC) -c $< -o $@ $(CFLAGS) $(OPENCVINC)

.c.o:
        $(CC) -c $< -o $@ $(CFLAGS) $(OPENCVINC)

clean:
        rm -f $(TARGET) $(OBJS)


(5) その他メリット

・gcc, g++  開発 は、超ラクかも

多少のリビジョンの違いはあるけど、WindowsとLinux側で、同じソースが動く

従って、Windosw側(MSYS)で開発して、Linuxにソースを送ってmakeするだけ。

だから、sambaなどで共有設定しておけば、面倒はかなり減る。

ただし、日本語は、わからない。僕は、日本語をソースコード内で使わない。


・ シェル類が、同じものが使える

ルートになるパス設定だけ、環境変数を読むようにしておけば、

同じシェルが使える


ということで、「もっと早くやっとけばよかった」


追加 POSIX thread  ---------------------------------------------

ダウンロード   https://sourceware.org/pthreads-win32/

The folder "Pre-built.2" contains the folders "lib" and "include", copy its contents into the MinGW folders of the same name. 

The folder "dll" contains pthreadGC2.dll and pthreadGCE2.dll , copy to MinGW/lib.

Important if using exception handling: Compile your application with the additional compiler switch "-mthreads". 

Peace!!

0 件のコメント:

コメントを投稿