10

誰かがSnowLeopardの下でBochsシミュレーターをコンパイルすることができましたか。Leopardは私にとってはうまく機能しましたが、Snow Leopardの下では、Carbonライブラリに関連する多くの問題が発生します...

わかりました、もう少し情報が要求されました。

  • シェルでmakeを使用してコンパイルします。bochsソースに付属する標準ビルドプロセス
  • 10.5SDKに対して正常にコンパイルできました。残念ながら、SnowLeopardの下では実行されていませんでした...常にクラッシュしました
  • 次に、SnowLeopard CDから最新のXCodeをインストールし、10.6SDKに対してコンパイルしました。isysrootフラグだけを変更せずに10.5ではなく10.6を指すようになりました。コンパイラーはいくつかのカーボンヘッダーを見つけるのに問題があります...(-frameworkCarbonはg++のパラメーターとして含まれています)

ここにエラーがあります...bochsのカーボンベースのGUIのコンパイルに関しては失敗します:

g++ -c  -I.. -I./.. -I../iodev -I./../iodev -I../instrument/stubs -I./../instrument/stubs -pipe -O3 -isysroot /Developer/SDKs/MacOSX10.6.sdk -framework Carbon -fomit-frame-pointer -finline-functions -falign-loops=16 -falign-jumps=16 -falign-functions=16 -falign-labels=16 -falign-loops-max-skip=15 -falign-jumps-max-skip=15 -fprefetch-loop-arrays  -fpascal-strings -fno-common -Wno-four-char-constants -Wno-unknown-pragmas -Dmacintosh -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES    carbon.cc -o carbon.o
carbon.cc:154: warning: non-local variable ‘<anonymous enum> last_screen_state’ uses anonymous type
carbon.cc:154: warning: non-local variable ‘<anonymous enum> screen_state’ uses anonymous type
carbon.cc:163: error: ‘CIconHandle’ does not name a type
carbon.cc: In function ‘OSStatus CEvtHandleWindowBackdropUpdate(OpaqueEventHandlerCallRef*, OpaqueEventRef*, void*)’:
carbon.cc:278: error: ‘GetWindowPortBounds’ was not declared in this scope
carbon.cc:279: error: ‘BackColor’ was not declared in this scope
carbon.cc:280: error: ‘EraseRect’ was not declared in this scope

...さらに多くの宣言されていないxxxエラー

よろしくお願いしますMac

4

8 に答える 8

9

私は最終的にこれを自分で達成することができましたが、予想よりも少し手間がかかりました. Linux であっても、Bochs をインストールするのは少し面倒かもしれません。

ノート

Carbon でコンパイルしようとすることを忘れてください。Apple はこれを非推奨にしており、64 ビットでアプリケーションをコンパイルすることはできません (Mac OS X のデフォルト)。http://appleinsider.com/articles/12/02/18/mountain_lion_focuses_on_cocoa_drops_x11_and_deprecates_carbon

ところで、Bochs チームは Mac OS X を使用していないため、おそらくこの問題を修正する予定はありません。これは、オープン ソース プロジェクトを支援するチャンスかもしれません: http://sourceforge.net/p/bochs/bugs/1204/

とはいえ、少し調整するだけで、SDL サポートを使用してコンパイルできるはずです。

SDL 1.2 ライブラリをインストールする

http://www.libsdl.orgからSDL ライブラリを取得して正しく動作させることができなかったので、Homebrew -- http://brew.sh -- を使用してインストールしました。

brew install sdl

Bochs の構成

デバッガーで Bochs を構成するのが好きで (OS 開発用)、ホーム ディレクトリにインストールするのが好きです (削除したい場合に備えて)。これが私が使用するconfigureコマンドです:

./configure --enable-ne2000 \
            --enable-all-optimizations \
            --enable-cpu-level=6 \
            --enable-x86-64 \
            --enable-vmx=2 \
            --enable-pci \
            --enable-usb \
            --enable-usb-ohci \
            --enable-e1000 \
            --enable-debugger \
            --enable-disasm \
            --disable-debugger-gui \
            --with-sdl \
            --prefix=$HOME/opt/bochs

--disable-debugger-guiを追加したことに注意してください。これは、デバッガーを有効にすることを選択した場合にデフォルトで有効になるためです。ただし、デバッガーの GUI は GTK+ に依存しており、Mac OS X にはデフォルトでインストールされていないため、無効にする必要があります (GTK+ は対処したくない別のワームです)。

Bochs のビルドとインストール

次に、ビルドしてインストールします

make
make install

最後に、BXSHARE 環境変数を設定してパスを更新します。

export BXSHARE="$HOME/opt/bochs/share/bochs"
export PATH="$PATH:$HOME/opt/bochs/bin"
于 2013-08-31T05:00:15.513 に答える
5

James が言った (-m32 スイッチの追加) に加えて、「-arch i386」も追加する必要があるかもしれません。

これは、私が構築するために使用した変更された conf ファイルです。

set echo
CFLAGS="-arch i386 -m32 -pipe -O3 -I/sw/include -fomit-frame-pointer -finline-functions -falign-loops=16 -falign-jumps=16 -falign-functions=16 -falign-labels=16 -falign-loops-max-skip=15 -falign-jumps-max-skip=15 -fprefetch-loop-arrays $CFLAGS"
CPATH="/sw/include"
CPPFLAGS=""
CXXFLAGS="$CFLAGS"
LDFLAGS="-arch i386 -m32 -L/sw/lib"
CXX="g++ -arch i386 -m32"

export CFLAGS
export CPATH
export CPPFLAGS
export CXXFLAGS
export LDFLAGS
export CXX

./configure --enable-sb16 \
     --enable-ne2000 \
     --enable-all-optimizations \
            --enable-cpu-level=6 \
            --enable-x86-64 \
            --enable-sse=2 \
            --enable-pci \
            --enable-acpi \
            --enable-debugger \
            --enable-clgd54xx \
            --enable-usb \
     --enable-plugins \
     ${CONFIGURE_ARGS}
于 2010-01-19T17:46:20.630 に答える
4

まず、「make dist-clean」を実行して、64 ビット モードで正常にコンパイルされたライブラリ コードの一部を削除する必要があります。これは、通常の「make clean」では削除されません。根本的な dist-clean。そうしないと、ビルドで 32 ビット コードと 64 ビット コードを混在させようとするため、うまくいきません。

ここで、CFLAGS と CXXFLAGS を設定して -m32 スイッチを含め、32 ビット モードを強制します。./configure を再実行してから make を実行すると、'bochs' バイナリが動作するはずです。

ただし、ビルドの問題を解決すると、Carbon バージョンが実行されなくなったことに気付くでしょう。X11 バージョンの方が適しているようです。(少なくとも、私の Snow Leopard システムでは、Carbon ビルドは早期にアサーション エラーで失敗します。X11 は期待どおりに動作します。) Carbon に依存せずに 64 ビット X11 ビルドを実行できる可能性がありますが、試したことはありません。これはまだ、32 ビットのみです。

于 2009-12-11T20:56:48.233 に答える
1

Snow Leopard はデフォルトで 64 ビットでコンパイルされますが、GUI Carbon アプリは 32​​ ビットである必要があります。

于 2009-11-05T22:28:44.367 に答える
1

64 ビット Mac で Bochs を実行する場合は、別の GUI ライブラリを使用する必要があります。X または SDL を使用することをお勧めします。

SDL: これを行うには、まずhttp://www.libsdl.org/download-1.2.phpから LibSDL をダウンロードしてインストールします。バイナリと開発ライブラリが必要になります。

Bochs ソース ファイルを抽出したら、 を実行します./configure --with-sdl=path-to-libsdl-dev-files

X11: ボックスからビルドする必要があります。./configure --with-x11 && make

于 2012-04-10T12:53:27.863 に答える
1

Mac の最も簡単な方法は ....

brew install home/x11/bochs

私は長い間他の方法を試しました..そして失敗しました.. MacOS X 10.11の下で

于 2015-12-03T09:09:53.037 に答える
0

@ユーザー6779

作成されたフラット UNIX バイナリではなく、Mac OS バンドル (bochs.app と呼ばれる) を使用するようにしてください。

ターミナルからの例:

./bochs.app/Contents/MacOS/bochs

そして、あなたはもはやそのアサーションを受け取ることはありません。

于 2011-06-08T19:13:43.497 に答える
0

これは、Xcode7開発者ツールとXQuarz 2.7.7を備えたMacOS X 10.10で私にとってどのように機能したかです

export CFLAGS=-I/opt/X11/include
export CXXFLAGS=-I/opt/X11/include
export LDFLAGS=-L/opt/X11/lib -lX11
./configure   --enable-debugger --enable-debugger-gui   --enable-all-optimizations    --enable-x86-debugger   --enable-ne2000   --enable-e1000  --enable-pnic   --with-x11  --without-carbon
make
sudo make install
于 2015-10-20T06:47:34.423 に答える