在Mac OS x Snow Leopard上编译Bochs

时间:2009-11-04 23:10:33

标签: macos osx-snow-leopard macos-carbon bochs

是否有人能够在Snow Leopard下编译Bochs模拟器。 Leopard对我来说很好,但是在Snow Leopard下我遇到了很多与Carbon库有关的问题......

好的,请求了更多信息。

  • 我在shell上用make编译;随着bochs来源的标准构建过程
  • 我成功地能够针对10.5 SDK进行编译。不幸的是,它没有在Snow Leopard下运行......总是坠毁
  • 然后我从SnowLeopard CD安装了最新的XCode,并针对10.6 SDK进行了编译;除了isysroot标志指向10.6而不是10.5之外什么都没有改变现在编译器有问题找到一些碳标题...(-framework Carbon作为参数包含在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

9 个答案:

答案 0 :(得分:8)

我终于能够自己完成这项任务,但它比我预期的工作多一点。即使在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

BTW,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"

答案 1 :(得分: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}

答案 2 :(得分:4)

首先,你必须运行“make dist-clean”来摆脱一些已经在64位模式下成功编译的库代码 - 这不会被常规的“make clean”删除,只有更激进的干净。否则,您的构建将尝试混合32位和64位代码,这不起作用。

现在设置CFLAGS和CXXFLAGS以包含-m32开关以强制32位模式。重新运行./configure,然后make,你应该得到一个有效的'bochs'二进制文件。

虽然已经解决了构建问题,但您可能会发现Carbon版本不再运行; X11版本似乎是一个更好的选择。 (至少在我的Snow Leopard系统上,Carbon构建失败并且断言失败; X11按预期工作。)你可能能够运行64位X11版本,没有Carbon依赖,但我还没试过这个,只有32位。

答案 3 :(得分:1)

Snow Leopard默认编译64位,但GUI Carbon应用程序必须为32位。

答案 4 :(得分: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

答案 5 :(得分:0)

@ user6779

确保您不使用创建的平面unix二进制文件,而是使用Mac OS软件包(称为bochs.app)。

例如来自终端:

./bochs.app/Contents/MacOS/bochs

你将不再接受这种说法。

答案 6 :(得分: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`enter code here`
make
sudo make install

答案 7 :(得分:0)

mac的最简单方法是......

brew install home/x11/bochs

我长时间尝试其他方式......失败了.. 在MacOS X 10.11下

答案 8 :(得分:0)

Brew使它起作用,因此可以在定制之前用作入门工具。

遵循the bochs formula中的步骤:

brew install pkg-config libtool sdl2

# Download and extract Bochs
curl -o bochs-2.6.9.tar.gz https://razaoinfo.dl.sourceforge.net/project/bochs/bochs/2.6.9/bochs-2.6.9.tar.gz
shasum -a 256 -c <<< 'ee5b677fd9b1b9f484b5aeb4614f43df21993088c0c0571187f93acb0866e98c  ./bochs-2.6.9.tar.gz'
tar xzf bochs-2.6.9.tar.gz
rm bochs-2.6.9.tar.gz
cd bochs-2.6.9

# Download and apply patch
curl -o xcode9.patch https://raw.githubusercontent.com/Homebrew/formula-patches/e9b520dd4c/bochs/xcode9.patch
shasum -a 256 -c <<< '373c670083a3e96f4012cfe7356d8b3584e2f0d10196b4294d56670124f5e5e7  ./xcode9.patch'
git apply ./xcode9.patch
rm xcode9.patch

# Configure and install
./configure --disable-docbook \
  --enable-a20-pin \
  --enable-alignment-check \
  --enable-all-optimizations \
  --enable-avx \
  --enable-cdrom \
  --enable-clgd54xx \
  --enable-cpu-level=6 \
  --enable-debugger \
  --enable-debugger-gui \
  --enable-disasm \
  --enable-fpu \
  --enable-iodebug \
  --enable-large-ramfile \
  --enable-logging \
  --enable-long-phy-address \
  --enable-pci \
  --enable-plugins \
  --enable-readline \
  --enable-show-ips \
  --enable-smp \
  --enable-usb \
  --enable-vmx=2 \
  --enable-x86-64 \
  --with-nogui \
  --with-sdl2 \
  --with-term
make
make install

现在应该安装(bochs --help),然后再运行它,不要忘记设置$BXSHARE环境变量。