平成22年5月25日火曜日

GO言語のインストールメモ FOR MAC

1.Go言語のソースをゲットする唯一の道はバージョン管理システムからダウンロードするみたいですので、
まずMercurialというpythonで実現したバージョンツールのクライアントをダウンロードしないいけないですけど、
ラッキのはeasy_installで簡単にインストールできそうですん。
sudo easy_install mercurial


2.環境変数の設定
~/.bashrcでいかの変数を設定します

export GOROOT=$HOME/go  ソースの場所
export GOARCH=amd64 x86-64を対応しています(パフォーマンスを結構期待できそうです)
export GOOS=darwin      Mac OS
export GOBIN=$HOME/bin インストール場所


3.ソースダウンロード
hg clone -r release https://go.googlecode.com/hg/ $GOROOT

4.インストール
$ cd $GOROOT/src
$ ./all.bash


5.プログラムのexample

$ cat >hello.go <package main

import "fmt"

func main() {
fmt.Printf("hello, world\n")
}
EOF
$ 6g hello.go
$ 6l hello.6
$ ./6.out
hello, world
$



6.Makefileのexample
cp ~/go/src/Make.cmd ./
cp ~/go/src/Make.amd64 ./
cp cmd/godoc/Makefile ./

Makefileの修正

# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.

include Make.$(GOARCH)

TARG=h
GOFILES=\
file.go\

include Make.cmd


平成22年5月11日火曜日

Linuxでpkgconfigの使い、設定方法

今回syslog-ngを自分でインストールする時、以下のエラーが出ました。
checking for GLIB - version >= 2.10.1... no
*** Could not run GLIB test program, checking why...
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means GLIB is incorrectly installed.
configure: error: Cannot find GLIB version >= 2.10.1: is pkg-config in path?


自分の環境確認した上で、GLibのバージョンが旧いのを判断しました
rpm -qa | grep glib
glib-1.2.10-20.el5


最初yumで自動更新してもらいたいけど、なんとyumのサイトにglib-1.2.10が最新バージョンです。。。。ショック!!

今回syslog-ngは2.10.1のglibが必要ので、glibから自分インストールするしかないです。

glibのインストールコマンド
cd /usr/local/src/
wget http://ftp.gnome.org/pub/gnome/sources/glib/2.22/glib-2.22.5.tar.gz
tar zxvf glib-2.22.5.tar.gz
cd glib-2.22.5
./configure && make && make install


インストールは簡単ですけど、単純にインストールしても、syslog-ngインストール時、
この新しいインストールしたglibは見つからないため、また失敗しました。

このとき、エラーメッセージ中のpkg-config in pathという文字列が目に入りました。
多分pkg-configに新しいglibのpathを設定すれば、問題解決するかもしれないので、ネットで
pkg-configの使い方を調査しました。

pkg-configはプログラムをコンパイル時、必要のlibの存在パスを表示するという役があります。

たとえば、下記のコマンドを実行した結果を見てみます。
pkg-config --libs libpng12
-lpng12


結果の-lpng12はgccコンパイル時使うパラメートと思います。

今回使うのglib-2.0を探してみましょう
pkg-config --libs glib-2.0
--libs glib-2.0: unknown option

エラー出しました。

実今回のglibのインストール後、/usr/local/libのしたにpkgconfigというフォルダーが出てきました。
このフォルダー中にglibのpkgconfig情報全部入ってますので、pkg-configコマンドを/usr/local/lib/pkgconfigの内容を読み込めば、問題解決すると思います。

対応方法は実に二つがあります
pkg-configコマンドはPKG_CONFIG_PATH環境変数中のConfigファイルを読み込みますので、
以下のようなコマンドを実行すれば、glibが見つかれます
env PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig/ pkg-config --libs glib-2.0
-L/usr/local/lib -lglib-2.0


もうしくは/usr/lib/pkgconfigというフォルダーがあって、pkg-configのデフォルトConfigフォルダーです。ここにglibのpkgconfigをコビーすれば、環境変数設定しなくても、glibが見つかります。
cp -a /usr/local/lib/pkgconfig/* /usr/lib/pkgconfig/
pkg-config --libs glib-2.0
-L/usr/local/lib -lglib-2.0


以上