zhuan----Win32下VS2008编译chrome浏览器--------生成project

网上有很多关于编译chrome的文章,不知道为什么他们从下载到编译都一直那么顺利,我生成个project却困难重重。

我先说我生成project时遇到的问题:

1、在用gclient sync时,不能更新webkit,http://svn.webkit.org服务器访问不了。

2、把 source tarball下载下来后,不更新,执行runhooks 命令失败,原因是不能解压toolchain_win_x86.tar.bz2。

第一个问题解决不了,所以还是只能用第二个来编译chrome。

步骤:

1、下载 source tarball源码压缩包,我的是r131936版的,用的是7Zip解压的。

2、下载depot_tools.zip  解压后设置环境变量,然后执行gclient --force 安装svn和python。

3、执行gclient runhooks生成project,执行成功的,就能开始编译了,不成功的接着往下看。


我遇到的不成功是因为不能解压.tar.bz2文件,其他的应该再具体分析。

在执行gclient runhooks时会下载两个文件一个是toolchain_win_x86.tar.bz2,一个是naclsdk_win_x86.tgz,存放在src\native_client\toolchain\.tars\目录下,对应的url为

http://commondatastorage.googleleapis.com/nativeclient-archive2/x86_toolchain/r8169/toolchain_win_x86.tar.bz2

http://commondatastorage.googleleapis.com/nativeclient-archive2/toolchain/8169/naclsdk_win_x86.tgz

或者通过修改src\native_client\build\download_toolchains.py来获得,在102行(可能会变)

if not download_utils.SyncURL(url, filepath, stamp_dir=stamp_dir,
                                min_time=min_time, hash=hash,
                               keep=keep, verbose=verbose):
    return False

在此处可以通过print url来查看。

,然后再次运行,便能在控制台上看到输出的信息。为了方便我直接用浏览器把那两个文件下了下来,放到src\native_client\toolchain\.tars\下面,然后注释了上面那条下载文件的语句。

接着往下面走,gclient runhooks会在src\native_client\toolchain\下创建一个临时文件夹,把下载的文件解压到这个文件夹中,然后把解压后的第二级目录移动到src\native_client\toolchain\下,总之就是把toolchain_win_x86.tar.bz2中的toolchain\win_x86移动到src\native_client\toolchain\下,把naclsdk_win_x86.tgz中的sdk\nacl-sdk移动到src\native_client\toolchain\下,并重命名为win_x86_newlib。

 过程了解清楚了,然后就能模拟程序的动作了,先把toolchain_win_x86.tar.bz2解压出来(windows下不知道为什么不能解压成功,我用linux解压的)取出toolchain\win_x86到src\native_client\toolchain\tmp(随便建的文件夹),然后用7Zip解压naclsdk_win_x86.tgz,取出sdk\nacl-sdk动到src\native_client\toolchain\tmp,并重命名为win_x86_newlib。然后开始修改程序,具体修改如下:

 为了节省时间,去掉下载文件的代码chromium\src\native_client\build\download_toolchains.py 102行

#if not download_utils.SyncURL(url, filepath, stamp_dir=stamp_dir,

  #                              min_time=min_time, hash=hash,
  #                              keep=keep, verbose=verbose):
  #  return False

去掉解压相关的代码chromium\src\native_client\build\download_toolchains.py 115行

try:

   #修改解压目录,自己指定上面两个解压后的路径
    untar_dir = 'I:\\Projects\\OpenSource\\Chrome\\svn_src\\home\\chrome-svn\\tarball\\chromium\\src\\native_client\\toolchain\\tmp'
    #print untar_dir
    tar = cygtar.CygTar(filepath, 'r:*')
    curdir = os.getcwd()
    os.chdir(untar_dir)
    try:
      #tar.Extract()//不再解压了
      tar.Close()
    finally:
      os.chdir(curdir)


    if not keep:
      os.remove(filepath)


    # TODO(bradnelson_): get rid of this when toolchain tarballs flattened.
    if 'arm' in flavor or 'pnacl' in flavor:
      src = os.path.join(untar_dir)
    elif 'newlib' in flavor:
      src = os.path.join(untar_dir, 'sdk', 'nacl-sdk')
    else:
      src = os.path.join(untar_dir, 'toolchain', flavor)
    #download_utils.MoveDirCleanly(src, dst)//去掉移动目录的代码
  finally:
    print 'finally'//替换了下面的语句
    #download_utils.RemoveDir(untar_dir)//去掉清除文件的代码,也可以不去

然后再执行gclient runhooks就应该能生成project了。然后就开始编译了,暂时还没开始编译,先不写了。

时间:2012-05-08

作者:lhf

你可能感兴趣的:(zhuan----Win32下VS2008编译chrome浏览器--------生成project)