作者:刘志义
一直从事Windows环境下开发,对Mac的了解非常少.近来要做一个Mac环境下的Firefox扩展开发,所以只能赶鸭子上架,边学边做。Firefox扩展开发分为两部分:JavaScript 和 XPCom。网上有太多好的教材可以参考,所以这里只是记录些我在Mac下开发XPCom遇到的小问题。
1. 文件格式
Firefox 的文件格式是i386,而在支持64位的Mac机器下,很多安装包和编译默认都是生成x86-64格式,导致不能正确解析,所以需要进行确认调整。当然我们xpcom也必须为i386.
2. XPT文件生成
如果你用xpidl来生成XPT文件的时候,会出现这个错误:
dyld: Library not loaded: /opt/local/lib/libintl.3.dylib
Referenced from: /Users/varmaa/xulrunner-sdk/bin/./xpidl
Reason: image not found
Trace/BPT trap
可以通过安装MacPorts来解决这个问题。需要注意的是,它默认是根据硬件来确定生成文件的格式是x86-64还是i386. 所以我们需要修改配置文件来强制其生成i386.
配置文件: opt/local/etc/macports.conf
修改 : #build_arch -> build_arch i386
MacPorts的安装:https://developer.mozilla.org/En/Developer_Guide/Build_Instructions/Mac_OS_X_Prerequisites
3. Debug模式下的编译
编译的时候可能会出现release编译没有问题,但是debug模式下有很多错误。这时候很可能是编译配置所导致的。在配置中加入如下选项应该能解决你的问题:
-Wl,-executable-path
-Wl,
/path/to/sdk/bin
4. Cocoa的使用
在XPCom 的开发过程中,我们不可避免的会用到Cocoa。但这时候你会发现,在CPP文件中调用Cocoa会出现一些错误。这是因为编译机制的问题导致的。可以通过修改文件类型为”sourcecode.cpp.objcpp来解决这个问题。