htop 2.0 をコンパイル

htop

『htopの開発者は2月10日(米国時間)、「htop – an interactive process viewer for Unix」においてhtopの最新版となる「htop 2.0.0」の公開を伝えた。htopはプロセッサリソースやメモリの使用量などを表示するモニタリング・コマンドで、システムで提供されているtop(1)コマンドよりも表示や操作方法に扱いやすさの工夫が取り込まれている。』ー マイナビニュース
 
 CPUやメモリの使用量などを表示する(CUI)コマンドです、OSXが正式にサポートされたということでコンパイルしてみました。

sh autogen.sh
./configure
make
sudo make install

 アクティビティモニタ.app でもいいんですが、これ自体メモリやCPUを結構消費するので手軽に調べたい時にはお勧めでしょうか。

 
Link 【Linux/*BSD/Macに対応した「htop 2.0」公開
Link 【htop – an interactive process viewer for Unix

Xcode 7 でビルド失敗

xcode6errer
 
 Xcode 7 で古い (Ver6.3以下の) プロジェクトをビルドしようとするとリンカコマンドの失敗でビルドできないことがある。
 
Undefined symbols for architecture x86_64:
"_objc_readClassPair", referenced from:
__ARCLite__load() in libarclite_macosx.a(arclite.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

 
xcode7_fix
 
 ネットで調べてみたところ、PROJECT – Build Settings の 「Implicitly Link Objective-C Runtime Support」と「Objective-C Automatic Reference Counting」を No に設定するとビルドが成功するようだ。
 
 
Link 【Linking with Xcode 7 fails due to “undef: _objc_readClassPair” #11

MAME 0.167~ Macでコンパイルエラー

mame0167
 MAME 0.168 がリリースされました、が ver0.167 からMacでコンパイルすると sdl_sound.cpp でエラーが発生する様になってしまいました。少し前の環境(OSX10.10/Xcode6.4)で ver0.166 までは正常にコンパイルできていたのですが…

/Library/Frameworks/SDL2.framework/Headers/SDL_stdinc.h:229:5: error:
'_MSC_VER' is not defined, evaluates to 0 [-Werror,-Wundef]
#if _MSC_VER >= 1600 /* VS 2010 and above */

 ログを見ると SDL2.framework の SDL_stdinc.h でコケているようです、以前からSDLは ver2.0.3 のまま触ってないのでやっぱりコンパイラ(Xcode7.x)のせいなのか?
 
sdl_stdinc

 いろいろと調べた結果、SDL_stdinc.hの229行目を #if defined(_MSC_VER) && (_MSC_VER >= 1600) に書き換えることでコンパイルに成功しました。これが適正かどうか分かりませんが、とりあえずOSX10.11上で動作してます。
 
/Library/Frameworks/SDL2.framework/Headers/SDL_stdinc.h

//#if _MSC_VER >= 1600 /* VS 2010 and above */
#if defined(_MSC_VER) && (_MSC_VER >= 1600)
 

MESS 0.152、OSX10.9上でコンパイルエラー

mess0152

 またかい、って事で… MESS 0.152 をMac上でコンパイルしたところ「dec_lk201.h」と「p1_hdc.h」でエラーが発生しました。最新のsvn版では既に修正されている様です。
 
mame/src/mess/machine/dec_lk201.h の 86行目をコメントアウト

 //UINT8 sci_data;

mame/src/mess/machine/p1_hdc.h の 46行目をコメントアウト

 //UINT8 m_ram[0x800];
 
 これでコンパイルが可能になります。

Link 【MAME – git dec_lk201.h / p1_hdc.h

MAME 0.152、OSX10.9上でコンパイルエラー

mame152

 アーケードエミュレータ MAME 0.152 がリリースされました。早速コンパイルしてみましたがソース netlist.h 辺りでエラーが発生…
 
In file included from src/emu/machine/netlist.h:54:
src/emu/netlist/nl_base.h:290:2: error: 'netlist_base_t' is an incomplete type

 
Emuversal Bulletin Board によるとコンパイラ(Clang)の問題で、最新のSVN版では既に修正されているとの事です。なのでエラーになる方はターミナルから svn コマンドを使って最新版をダウンロードしてください。( svn は Xcode の command-line tools をインストールすると使えるようになります)
 
cd ~/downloads
svn co svn://dspnet.fr/mame/trunk

 
ダウンロードしたソースをコンパイルしたところ、正常に起動できました。
 
Link【MAME | Multiple Arcade Machine Emulator

SDL1.2.15、OSX10.9上でコンパイルエラー

sdl_patch

 OSX10.9上で SDL1.2.15 がコンパイルできない問題が発生しています。(SDL2.0.1は問題なし)
コンパイルしようとすると「SDL_QuartzVideo.h」「SDL_x11sym.h」でエラーが発生するようです、ネットで検索してみると既にパッチが出ていました。

■ SDL_QuartzVideo.h のパッチファイル
http://www.emaculation.com/doku.php/compiling_sheepshaver_basilisk#tidbits
http://ftp.cc.uoc.gr/mirrors/macports/release/ports/devel/libsdl/files/no-CGDirectPaletteRef.patch

■ SDL_x11sym.h のパッチファイル
https://bugs.archlinux.org/task/36179
https://bugs.archlinux.org/task/36179?getfile=10749
 
パッチファイルをダウンロードし、SDL-1.2.15 フォルダの中に入れます
ターミナルを起動してSDL-1.2.15ディレクトリに移動、patchコマンドを実行します
 
 cd /Users/Jazzin/Compile/SDL-1.2.15
 patch -u -p0 < sdl_x11sym.patch
 patch -u -p0 < no-CGDirectPaletteRef.patch

 
取り敢えずこれでコンパイルできました、公式のソースも修正して欲しいですね。

Mednafen 0.9.23-WIP をコンパイル

 マルチエミュレータ Mednafen 0.9.23-WIP がリリースされました。ネットワークプレイが改良されSDL_netライブラリが必要なくなりました、他は特に大きな変更は無さそうですね、バグフィックスがメインの様です。更新内容は以下の通り、詳しくは付属の ChangeLog を御覧ください。
 
このリリースで特に注目すべきエンドユーザーに見える変更点:
・様々なPSXエミュレーションのマイナーな改善(「ウンジャマ・ラミー」「リッジレーサータイプ4」「トリプルプレイ97」のマイナーな問題と「デッドオアアライブ」の重大な問題を修正)。
・マイナーなネットワークプレイのバグ修正と改善。”mednafen-server”の新しいバージョン0.4.2は、このバージョンのMednafen以降から使用されることが必要。
・SDL_net の依存性を排除し、ネットプレイの為にIPv6のサポートを追加。
・メガドライブエミュレーションを使用時、QuickTimeムービー録画コードがエミュレータ起動の直後にクラッシュするバグを修正。

 
 MacOSX10.7上でコンパイルすると mednafen/src/drivers/NetClient_POSIX.cpp の202行目くらいで “MSG_NOSIGNAL”関係のエラーが発生します。この問題を回避するには NetClient_POSIX.cpp の先頭に以下のコードを追加するとコンパイルできるようになります。これが正解かどうか分かりませんが… ネットプレイをしなければ多分問題ないと思います。

#ifndef MSG_NOSIGNAL
# define MSG_NOSIGNAL 0
#endif

追記(この問題は 0.9.24-WIP で修正されました)
 

Xcode 4.3 で openMSX をコンパイル

 openMSXのSVNが更新される度にダウンロードしてコンパイルしていたんですが、Xcode を4.2(?)にアップデートした頃から何故かコンパイルに失敗するようになってしまいました。
出てきたエラーを見ると、

No working C++ compiler was found.
Please install a C++ compiler, such as GCC's g++.
If you have a C++ compiler installed and openMSX did not detect it, please set the environment variable CXX to the name of your C++ compiler.
After you have corrected the situation, rerun "configure".

 どうやらC++コンパイラーへのリンクがおかしくなっているようです。
しかしまあ、しばらくしたら修正されるだろうと思っていたんですが openMSX 0.8.2 がリリースされても修正はされず、そのまま放置状態。何だかなぁ… Macでソースからコンパイルしている人は誰も居ないのか? 仕方無いので何とか自分で修正してみました。

/build/platform-darwin.mk を開く

38行目 の SDK_PATH を編集
SDK_PATH:=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk

50行目 の CXX パスを編集
CXX:=llvm-g++-4.2

 Xcode 4.3 からXcode.appのパッケージ内にDeveloperフォルダを置く様な仕様になったので、SDKとコンパイラのパスを変更してみました。

書き換えたら platform-darwin.mk を保存して ./configure を実行

build/main.mk:383: Unsupported compiler: llvm-g++-4.2, please update Makefile

「build/main.mk:383: サポートされていないコンパイラ: llvm-g++-4.2」と出ますが、一応これでコンパイルできるようになります。