在Mac OS x Snow Leopard上编译Bochs

9 macos macos-carbon osx-snow-leopard 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
Run Code Online (Sandbox Code Playgroud)

......更多未声明的xxx错误

在此先感谢Mac

HVS*_*HVS 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

顺便说一句,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
Run Code Online (Sandbox Code Playgroud)

配置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
Run Code Online (Sandbox Code Playgroud)

请注意,我添加了--disable-debugger-gui,因为如果您选择启用调试器,则默认启用它.但是,由于调试器GUI依赖于GTK +,并且默认情况下不在Mac OS X上安装,因此您需要禁用它(GTK +是您不想处理的另一种蠕虫).

建立和安装Bochs

接下来,构建并安装

make
make install
Run Code Online (Sandbox Code Playgroud)

最后,只需设置BXSHARE环境变量并更新路径:

export BXSHARE="$HOME/opt/bochs/share/bochs"
export PATH="$PATH:$HOME/opt/bochs/bin"
Run Code Online (Sandbox Code Playgroud)


Eli*_*any 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}
Run Code Online (Sandbox Code Playgroud)


Chu*_*uck 1

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