首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Mac x雪豹上编译Bochs

在Mac x雪豹上编译Bochs
EN

Stack Overflow用户
提问于 2009-11-04 23:10:32
回答 8查看 7.7K关注 0票数 10

有人能编译雪豹下的Bochs模拟器。豹为我工作很好,但在雪豹之下,我遇到了很多与碳库有关的问题.

好的,要求提供更多的信息。

  • I在shell上使用make进行编译;与bochs源代码一起来的标准构建过程
  • I能够成功地在10.5SDK上编译。不幸的是它不是在雪豹下面跑的..。总是崩溃
  • ,然后我从SnowLeopard CD中安装了最新的XCode,并在10.6SDK上编译;只更改isysroot标志指向10.6,而不是10.5,现在编译器在查找一些碳头时有问题.(-framework碳作为g++的参数)

这里的错误..。在编译bochs基于碳的gui时,它失败了:

代码语言:javascript
复制
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错误

谢谢你,麦克

EN

回答 8

Stack Overflow用户

发布于 2013-08-31 05:00:15

我终于能够自己完成这一任务,但这比我预期的要多一些。即使在Linux上,Bochs的安装也会有些变化无常。

备注

忘了尝试用碳进行编译。苹果公司对此表示反对,你将无法用它来编译64位的应用程序( Mac的默认版本)。http://appleinsider.com/articles/12/02/18/mountain_lion_focuses_on_cocoa_drops_x11_and_deprecates_carbon

顺便说一句,Bochs团队不使用Mac,也可能不会解决这个问题。这可能是帮助开源项目的机会:http://sourceforge.net/p/bochs/bugs/1204/

尽管如此,您应该能够使用SDL支持进行编译,只需稍作调整。

安装SDL1.2库

我无法让http://www.libsdl.org中的SDL库正常工作,所以我使用了Homebrew -- http://brew.sh --来安装它:

代码语言:javascript
复制
brew install sdl

配置Bochs

我喜欢用调试器配置Bochs (用于操作系统开发),并且我喜欢将它安装到我的主目录中(以防我想删除它)。下面是我使用的配置命令:

代码语言:javascript
复制
./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上默认情况下没有安装,所以您希望禁用它(GTK+是您不想处理的另一个蠕虫)。

建造和安装Bochs

接下来,构建和安装

代码语言:javascript
复制
make
make install

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

代码语言:javascript
复制
export BXSHARE="$HOME/opt/bochs/share/bochs"
export PATH="$PATH:$HOME/opt/bochs/bin"
票数 9
EN

Stack Overflow用户

发布于 2010-01-19 17:46:20

除了James (添加-m32开关)之外,您可能还需要添加"-arch i386“。

下面是我用来构建的修改后的conf文件:

代码语言:javascript
复制
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}
票数 5
EN

Stack Overflow用户

发布于 2009-12-11 20:56:48

首先,您必须运行"make dist- clean“,以摆脱一些在64位模式下成功编译的库代码--这不会被常规的"make”所删除,只会被更激进的dist-clean删除。否则,您的构建将尝试混合32和64位代码,这是行不通的。

现在将CFLAGS和CXXFLAGS设置为包含强制32位模式的-m32开关。重新运行./配置,然后生成,您应该得到一个工作的'bochs‘二进制文件。

不过,在通过了构建问题之后,您可能会发现碳版本不再运行;X11版本似乎是一个更好的选择。(至少,在我的雪豹系统上,碳构建在断言失败的早期就失败了;X11的工作原理与预期一样。)您可能可以运行64位X11构建,而不依赖于碳,但我还没有尝试过,只有32位。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1677324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档