Posts Tagged MacOS X

psptoolchainをSnow LeopardなMacBook Airに入れようとして失敗中

世の中にはPSPをクラックして自作ソフトを使おうと言う人たちがいる。
で、今Cを勉強中だから、それに勢いを付けるために、その非公式開発環境であるところのpsptoolchainをMacで揃えようかと思った次第。
でもね、世の中そんなに甘くないんだよねぇ〜、と言うお話。

実はここ数月、Snow LeopardなMacBook Airにそのpsptoolchainをインストールしようと四苦八苦してたんだよね。
でも今のところダメ。
と言うわけで、自分がどこまで調べて、何をやって、どこまでダメなのかを備忘録として残すことに。

2010/02/11追記
よっふぃ〜さんがインストールに成功された模様なので、そちらを参照してください。
http://yoffy.dyndns.org/2010/02/pspsdk_on_mac_os_x_106.html
追記終了。。。

まずやったことは、いろいろなサイト(例えばこことか)に書いてある通り、一般的なツール類をMacPortsからインストールした。
必要なものは、
autoconf
automake
wget
Subversion
とか。

とある場所では
autoconf
automake
bison
flex
gcc
make
ncurses
paptch
subversion
texinfo
wget
なんだとか?
ただ、ここではdoxygenがあると便利とか?
まぁ、おおむねそんな感じの物が必要です、と。

と言うわけで、

McLaren% sudo port install autoconf automake wget subversion

とかやっちゃうわけです。
心配な人は

McLaren% sudo port install autoconf automake bison flex gcc make ncurses paptch subversion texinfo wget doxygen

とかね。

で、どっかにテケトーなディレクトリを作るわけです。
俺はとりあえずDownloadsに置いてみた。

McLaren% mkdir pspdev_temp
Mclaren% cd pspdev_temp

お次はシェルの設定ファイルにPATHを通す。
普通のMacでは.bashrcに以下を書き込む。

export PSPDEV=/usr/local/pspdev
export PATH=$PATH:$PSPDEV/bin

俺はzshなので.zshrc。
でもこの構文は同じだから同じ記述でOK。
で、PSPDEVの対象がインストール先になる。
実はこれ、どこでもいいらしく、/usr/localじゃなくてもMacPortsの/opt/localとかでもいいし、$HOMEでもぶっちゃけいいらしい。

書き換えが終ったらSubversionでダウンロード。

McLaren% svn checkout svn://svn.ps2dev.org/psp/trunk/psptoolchain

(checkoutをcoにしてもOK)
これで作業用ディレクトリにpsptoolchainが出来たはず。
そこに移動して、

McLaren% ./toolchain.sh

とするとコンパイルおよびインストールが進みますよ〜、と言うふれこみ。

するとどうでしょう。

configure: error: Building GCC requires GMP 4.1+ and MPFR 2.3.0+.
Try the --with-gmp and/or --with-mpfr options to specify their locations.
Copies of these libraries' source code can be found at their respective
hosting sites as well as at ftp://gcc.gnu.org/pub/gcc/infrastructure/.
See also http://gcc.gnu.org/install/prerequisites.html for additional info.
If you obtained GMP and/or MPFR from a vendor distribution package, make
sure that you have installed both the libraries and the header files.
They may be located in separate packages.
../scripts/002-gcc-4.3.2-stage1.sh: Failed.

GMPかMPFR(もしくはその両方)がおかしいですよ〜、だって。

あ、ちなみに、それ以前に見つからないよ〜系のエラーは恐らくpsptoolchain/dependsのチェック処理でgmpとmpfrのチェックディレクトリが違うから。
そのファイルを開いて下記のように書き換えること。
check-gmp.sh

#!/bin/sh
# check-gmp.sh by Dan Peori (danpeori@oopo.net)
## Check for the gmp library.
# ls /usr/local/gmp-4.3.1/include/gmp.h 1> /dev/null || { echo "ERROR: Install gmp before continuing."; exit 1; }
## Custm for Mac
ls /opt/local/include/gmp.h 1> /dev/null || { echo "ERROR: Install gmp before continuing."; exit 1; }

check-mpfr.sh

#!/bin/sh
# check-mpfr.sh by Dan Peori (danpeori@oopo.net)
## Check for the mpfr library.
#ls /usr/include/mpfr.h 1> /dev/null || { echo "ERROR: Install mpfr before continuing."; exit 1; }
## Custom for Mac
ls /opt/local/include/mpfr.h 1> /dev/null || { echo "ERROR: Install mpfr before continuing."; exit 1; }

こうすれば、MacPortsにインストールされたGMPとMPFRを見るようになる。

んで、いろいろ調べた結果、MacOS X 10.6 Snow LeopardのMPFRにはバグがあります、と。。
いろいろ調べたんだけどねぇ〜。
それこそ毎日調べた。
GMPとMPFRのソースを落としてきて、独自にビルドもした。

わかったことと言えば、GMPとMPFRは数値計算用ライブラリで、GMPが無いとMPFRがインストールできない。
要は拡張ライブラリみたいな物かね?MPFRは。
そしてなぜpsptoolchainに必要なのか?
それは、PSP用のコンパイラを作るため。
UNIXでのデファクトスタンダードであるGCCなんだけど、このGCCがGMPとMPFRを必要とするんだとか。
そもそもなんでGMPとMPFRがおかしくなっているかと言えば、Snow LeopardのOS内部が64ビットにかなり舵取りを決めたから。
とは言いつつも、ラップトップだと32ビットモードで起動しているとかなんだかややこしいんですけれども。。。それどうなのよ?アップルさん。
恐らくその辺りの問題でGMPとMPFRがおかしい。
数少ない情報をたぐり寄せると、恐らくはMPFRだけがおかしい。
おまけにソースからコンパイルしてテストすると、やっぱりエラーが出る(これは両方)。

で、それらをコンパイルできない理由がコンパイラがおかしいからとか読んだから、GCCをビルドすることに。
いや、このときはまだGCCのコンパイルにGMPとMPFRが必要だとはイマイチピンと来ていなかったんだけれども。。
結局出来なくて、MacPortsの各バージョンのGCCをインスコして、/usr/bin/gccのシンボリックリンクをそれらに修正。

更にMac用GCCのコンパイルトラブルの記事を読みあさっていて見つけた記事からすると、psptoolchainのGCCはSnow Leopardではコンパイルできなくて、4.3.2以降から出来る、と。
と言うことはpsptoolchainのGCCを最新版にすれば良いのかと思って、psptoolchainのGCCに関する場所を最新版(現時点で4.4.2)に書き換えて、更に手動でDL。
Diffに書いてある箇所を何となく見つけてきて書き換えてビルとを試みるも、そもそも内部構造が結構変わっていて断念。
問題を解決したとされる4.3.4にして書き換えを試みると、ソース的にはほぼOK。
で、ようやくコンパイルしてみると。。。
なんか、意味不明なコンパイルエラー。。。。
も〜、いや。

MacPortsのmpfrがバージョンアップされていたから、何度目かの正直を実践中。
で、やっぱダメ。。<今ここ
助けてくれそうな人は
http://www.lan.st/forumdisplay.php?f=43&daysprune=-1&order=desc&sort=lastpost
http://arnold.hyperphp.com/forums/
http://forums.qj.net/developers-dungeon/162579-psptoolchain-mac-os-x.html
辺りに居そう。
もうちょっと張り込みます。

そんだけ。

Post to Twitter

, , , , , , , ,

2 Comments

MacOSXでのJava文字化け解消とか

移り気な俺はJavaにも興味津々。
と言うわけで、いまさらJavaの端っこをかじることに。
で、Macには標準で入っている。

と言うか、Javaのバージョンアップがあったからちょいとやってみようかと思ったんだけれども。
あと、ちょっとした縁で本を借りたので、内容はWindows用っぽいけどやっぱり無理矢理チャレンジすることにw

で、最初につまずいたのがJava自身の文字化け。
どうやらShift JISをベースに出してくれるらしく、ちょっと面倒なことに。
Javaのバージョンが知りたくて

javac --version

を打ったんだけど、

McLaren% javac --version
javac: --version �͖���ȃt���O�ł��B
�g����: javac <options> <source files>
�g�p�”\�ȃI�v�V�����̃��X�g�ɂ‚��ẮA-help ��g�p���܂�

こんな感じに。

恐らくこのままだとエラーメッセージまでこれw
せめて英語でエラーを受けたいところ。
(文字化けと比較すれば、英語ならまだ読めるw)

で、いろいろ探したところ、シェルの設定ファイルに下記を書き込めば良いとのこと。
恐らく多くの人はbashなので~/.bashrcを。
自分はzshなので~/.zshrcを。

alias javac="javac -J-Dfile.encoding=UTF-8"
alias java="java -Dfile.encoding=UTF-8"

で、もう一度Javaコンパイラのバージョンを見てみることに。

McLaren% javac --version
javac: --version は無効なフラグです。
使い方: javac <options> <source files>
使用可能なオプションのリストについては、-help を使用します

おお、日本語w
(そして–versionなんてフラグは無いw)
さすが世界企業Sun。
そして愛しのVimの原型viを開発したビル・ジョイも参加して作っただけある。
やっぱすごい。
そして便利そう。
(クソ単純な俺)

そうそう、実は自分のファイルにこれだけは書いてあった。

export JAVA_OPTIONS="-Dfile.encoding=UTF-8"

一度挑戦しようとしかけたのかね?w
とは言え、失敗していたからアレなんだけれども。

と、ここまで書いたんだけど、今CおよびC++の勉強中だから、あくまで気まぐれ。
いつ続きをやるかわかりませんので悪しからず〜。

あ、ちなみに正式なバージョン情報は

McLaren% javac -version
javac 1.6.0_17

と言った感じ。
(珍しく、ハイフン1つ少なくていいのね)

そんだけ。

Post to Twitter

, , , , ,

No Comments

fetch、wget、cURLは基本的に便利。

やはりUNIX系コマンドのお話。
大概ネットに繋がっていることがあり、ファイルを落としたいなんてこともある。
で、Zipとかの書庫やらファイルを落としたい時がある。
そんな時に活躍するのがfetch、wget、cURL。
なんで3つも種類があるかと言うと、fetchがFreeBSDのもの。
wgetがLinuxとか。
cURLがMacでは標準。
機能的には恐らくfetch<wget≦cURLかな?

使い方としては

% fetch http://www.google.com

とか。

で、wgetとかcURLだと再起的に取ってきたり、連番で取ってきたりできるっぽい。
例えば

% curl -O http://www.hogehoge.com/img_[1-100].jpg

とすれば、img_1.jpg〜img_100.jpgをDLできる。

これからもお世話になりそう。

そんだけ。

Post to Twitter

, , , , , , , ,

No Comments

MacPorts

最近のMacを弄っていると驚くほどUNIXなことに気がつく。
MacPortsもそんな一つ。
http://www.macports.org/
これはFreeBSD由来のPorts CollectionのMac版で、そのOSで使えるUNIXプログラムのソースコードを取ってきて、設定、およびインストールをしてくれると言う優れもの。
今回はその使い方をメモついでに書いておくことに。
(よく手帳を読み返すんだよね、これ。。)

準備するもの。

  • OSX 10.4 以降が走るMac
  • OSX 10.4 以降のMacOS X
  • ネット環境
  • Xcodeの最新版

最低でもこれくらいは必要かと。
で、総本山に行って、最新版のMacPortsを落としてくる。
http://www.macports.org/install.php
ここの「Mac OS X Package (.pkg) Installer」と書いてある場所の該当OSをクリック。
macpotrs.org_download_page
で、dmgからインスコしてとりあえずインストール完了。

更に、シェルにパスを通さないとportとだけ書いても動かないので、下記の記述を.bashrcなどに追加する。
(ついでにマニュアルも記述しておく)

export PATH=/opt/local/bin:/op/loca/sbin:$PATH
export MANPATH=/opt/local/man:$MANPATH

あとはインストールしたいUNIXツールを見つけたら

% sudo port install ソフトウェア名

と言った感じ。

こっから先はコマンドリファレンス的なもの。
Read the rest of this entry »

Post to Twitter

, , , ,

No Comments

Objective-Cのお勉強 #2 ファイルの分割とコンパイル

前回はクラスとメソッドを定義し、それをmain関数から呼び出すと言うことに。
前回までのソースは下記の通り。

// engine.m
#import <Foundation/NSObject.h>
#import <stdio.h>
@interface Engine : NSObject
- (void) startEngine;
@end
@implementation Engine
- (void) startEngine
{
printf( "Start my engine!\n" );
}
@end
int main()
{
// idと言う型の変数を定義します
id obj;
// クラスのインスタンス化
obj = [[Engine alloc] init];
// EngineクラスのstartEngineメソッドを呼び出します
[obj startEngine];
return 0;
}

Read the rest of this entry »

Post to Twitter

, , , ,

No Comments

Objective-Cのお勉強 #1 簡単なクラスとメソッドの説明

今回は「クラス」と「メソッド」と言うものについて勉強して行こうじゃないですか、と。
まず、クラスと言うものは、プログラムの部品だと思って下さい。
オイラは自動車が好きなのでそれで例える。

1つのプログラムが自動車そのものだとしたら、クラスとはなでしょ?
答えは簡単で、それはボディーであったり、エンジンであったり、タイヤであったり、サスペンションであったりする。
エンジンも細かく分けて行けばカムシャフトやら、ピストンやら、ブロックやらたくさんある。
それがプログラムで言うところの「メソッド」。

では、実際のコードでエンジンクラスを作っていきましょうかね。
Read the rest of this entry »

Post to Twitter

, , , ,

No Comments

Objective-Cのお勉強 #0 準備篇

MacやらiPhoneでプログラミングをする場合、CやC++、はたまたJavaなんかを思い浮かべる時代はとうに終わったそうです。。

それを突きつけられたのがこの前バージョンアップしたOS、Mac OS X Snow Leopard。
これに対応したIDE(開発環境)であるXcode 3.2のテンプレートから、C/C++用のCarbonと呼ばれる環境用のテンプレートが無くなり、Javaなんかは結構前から無かったり、PythonやRubyもサポートされていたようなんだけど、それも削除。
xcode3.2_new_project
マカー系プログラマに残された道はObjective-CベースのCocoa環境しか無いわけですよ。
んじゃ、やっぱ勉強しますか。
CやC++でさえ怪しい身分ですが。。。

Read the rest of this entry »

Post to Twitter

, , , , ,

No Comments

OSXでのSSH接続についてごニョゴニョ

ご無沙汰です。yu++です。
なんか、ちょっとずつではあるけれど、OSXとか言うOSに慣れてきたのでちょっとメモを残しておきたいなぁ、なんて。(あえてMacとは書かないのは、あのシンプルで美しかったMacを汚さないためw)。
Windows環境ベッタリだったので、こういうUNIX的なツールに触る機会も無く、今日に至った和尚な訳ですが、OSXは結構なUNIXだったりするわけで。
個人的には旧態依然が嫌いなので、UNIXとか論外なんだけど、それでもよいと思ったものには敬意を払うのが人の道。最近コマンドラインにちょっとはまりかけていて、「キーボードやマウスなどと言う旧世代のデバイスなんて、すぐになくなっちまえばいい」と思っている和尚からは想像もつかない猫まっしぐらオーラを出している最中。
そんな中で、僧と言う職業柄、Windows環境などではPuTTyなどのTerminalアプリを使ってSSH接続をしないといけないわけ。が、これはOSXには無い。てか、あるはずが無い。だって、UNIXには標準で入ってるんだから。コマンドラインシェルでシコシコ打つこと数時間。半透明などのエフェクトをかけることが出来るOSXのTerminalから、外部サーバに接続できるようになった。
Read the rest of this entry »

Post to Twitter

, , , , ,

No Comments