由于比较忙,有一段时间没有来QTCN了,最近在看Gecko嵌入第三方应用程序的开发,已经突破了第一道关卡,FF2.0.0.5在Windows的编译部分,正准备研究FF下面winEmbed的例子的时候,发现是VC编译的(我使用的vs2003),在自己建立win控制台工程的基础上一步一步添加文件编译选项还是未能通过,网上也有人说用VC只能编译通过连接不成功,看到这个贴
http://www.qobject.com/htm_data/46/0706/3726.html于是就把自己编译FireFox的过程贴出来,供感兴趣的朋友一起研究。
如果有错请指出,欢迎交流。
方法一:(a)使用Cygwin编译(下载地址:
http://www.cygwin.com/是一个网络安装客户端,选择好你要下载的文件)。
编译需要以下这些文件:
ash
coreutils
diffutils
findutils
grep
sed
gawk
unzip
zip
perl
gawk
make
patchutils
最好一次选全。
(b) 将C:\cygwin\bin\linker.exe改名为glinker.exe
在系统的环境变量里添加MOZ_TOOLS = C:\moztools
把 c:\cygwin\bin 放在 c:\windows\system32 之前
在PATH加上%MOZ_TOOLS%\bin一句
(c)编译的过程
打开C:\cygwin\Cygwin.bat文件添加如下代码:
- @echo off
- rem --- 基本的设置
- SET MOZ_TOOLS=C:\moztools
- SET GLIB_PREFIX=C:\moztools
- SET LIBIDL_PREFIX=C:\moztools
- SET MINGWBASE=C:\Dev-Cpp
- SET CYGWINBASE=C:\cygwin
- SET INCLUDE=
- SET LIB=
- SET PATH=C:\;C:\windows\system32;C:\windows;C:\windows\system32\wbem
- rem --- 设置Cygwin路径
- SET PATH=%CYGWINBASE%\bin;%PATH%
- rem --- 掉用另一个bat文件,设置 VC7 编译环境变量
- call "C:\cygwin\guess-msvc.bat"
- if "%VC71DIR%"=="" (
- ECHO "Microsoft Visual C++ version 7.1 was not found. Exiting."
- pause
- EXIT /B 1
- )
- call "%VC71DIR%\Bin\vcvars32.bat"
- rem --- 添加 glib/libidl
- SET PATH=%PATH%;%GLIB_PREFIX%;%GLIB_PREFIX%\bin
- SET INCLUDE=%GLIB_PREFIX%\include;%INCLUDE%;%MINGWBASE%\include
- SET LIB=%GLIB_PREFIX%\lib;%LIB%
- rem -- moztools 添加在 glib/libIDL 之后
- SET PATH=%PATH%;%MOZ_TOOLS%\bin
- rem – bat文件中原来的内容
- C:
- chdir C:\cygwin\bin
- bash --login –i
guess-msvc.bat文件内容:
- REM -*- Mode: fundamental; tab-width: 8; indent-tabs-mode: 1 -*-
- @ECHO OFF
- set CYGWIN=
- if not defined MOZ_NO_RESET_PATH (
- set PATH=%SystemRoot%\System32;%SystemRoot%;%SystemRoot%\System32\Wbem
- )
- SET INCLUDE=
- SET LIB=
- SET MSVCROOTKEY=HKLM\SOFTWARE\Microsoft\VisualStudio
- SET MSVC6KEY=%MSVCROOTKEY%\6.0\Setup\Microsoft Visual C++
- SET MSVC71KEY=%MSVCROOTKEY%\7.1\Setup\VC
- SET MSVC8KEY=%MSVCROOTKEY%\8.0\Setup\VC
- SET MSVC8EXPRESSKEY=HKLM\SOFTWARE\Microsoft\VCExpress\8.0\Setup\VC
- REM First see if we can find MSVC, then set the variable
- REM NOTE: delims=<tab><space>
- REM NOTE: run the initial REQ QUERY outside of the if() to set ERRORLEVEL correctly
- REG QUERY "%MSVC6KEY%" /v ProductDir >nul 2>nul
- if "%VC6DIR%"=="" (
- IF %ERRORLEVEL% EQU 0 (
- FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "%MSVC6KEY%" /v ProductDir') DO SET VC6DIR=%%B
- )
- )
- REG QUERY "%MSVC71KEY%" /v ProductDir >nul 2>nul
- if "%VC71DIR%"=="" (
- IF %ERRORLEVEL% EQU 0 (
- FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "%MSVC71KEY%" /v ProductDir') DO SET VC71DIR=%%B
- )
- )
- REG QUERY "%MSVC8KEY%" /v ProductDir >nul 2>nul
- if "%VC8DIR%"=="" (
- IF %ERRORLEVEL% EQU 0 (
- FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "%MSVC8KEY%" /v ProductDir') DO SET VC8DIR=%%B
- )
- )
- REG QUERY "%MSVC8EXPRESSKEY%" /v ProductDir >nul 2>nul
- if "%VC8EXPRESSDIR%"=="" (
- IF %ERRORLEVEL% EQU 0 (
- FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "%MSVC8EXPRESSKEY%" /v ProductDir') DO SET VC8EXPRESSDIR=%%B
- )
- )
- REM Look for Installed SDKs:
- SET SDKROOTKEY=HKLM\SOFTWARE\Microsoft\MicrosoftSDK\InstalledSDKs
- SET SDK2003SP1KEY=%SDKROOTKEY%\8F9E5EF3-A9A5-491B-A889-C58EFFECE8B3
- SET SDK2003SP2KEY=%SDKROOTKEY%\D2FF9F89-8AA2-4373-8A31-C838BF4DBBE1
- REG QUERY "%SDK2003SP2KEY%" /v "Install Dir" >nul 2>nul
- if "%SDKDIR%"=="" (
- IF %ERRORLEVEL% EQU 0 (
- FOR /F "tokens=3* delims= " %%A IN ('REG QUERY "%SDK2003SP2KEY%" /v "Install Dir"') DO SET SDKDIR=%%B
- )
- )
- REG QUERY "%SDK2003SP1KEY%" /v "Install Dir" >nul 2>nul
- if "%SDKDIR%"=="" (
- IF %ERRORLEVEL% EQU 0 (
- FOR /F "tokens=3* delims= " %%A IN ('REG QUERY "%SDK2003SP1KEY%" /v "Install Dir"') DO SET SDKDIR=%%B
- )
- )
- ECHO Visual C++ 6 directory: %VC6DIR%
- ECHO Visual C++ 7.1 directory: %VC71DIR%
- ECHO Visual C++ 8 directory: %VC8DIR%
- ECHO Visual C++ 8 Express directory: %VC8EXPRESSDIR%
- ECHO SDK directory: %SDKDIR%
进入mozilla的目录输入./configure –enable-application=browser –disable-installer
成功之后就make
注意:但这里编译快结束的时候会出现错误,不知道为什么,如果你知道请指出。
方法二:从这里下载
http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/MozillaBuildSetup-1.1.exe默认安装在C:/mozilla-build下
进入C:\mozilla-build执行start-msvc71.bat
输入configure –enable-application=browser
等configure成功之后,输入make
等大约30-60分钟后编译成功
进入C:\mozilla\dist\bin执行firefox.exe