Chrome 编译错误汇总

        由于各种你懂的原因,訪问google的服务总是出错,先是hosts不工作。代理也不好使,最后最终能够短暂訪问了。我的版本号还是採用svn维护的,直接svn update也不行。试试git吧,一晚上才下载了120M,这得要猴年马月才干下完那。

找找tarball吧,TNND,尽然google删除了tarball!好在能够通过git的tgz方式变通的拿到tarball。一更新得到提示:ubuntu14.04不支持。算了,再整个30G的空间装个Ubuntu12.04吧,“尝尽了生活的苦。找不到能够相信的人”。

下了个dep_tool又不通了。一执行gclient报错:

gclient runhooks:

/.gclient: line 8: solutions: command not found

./.gclient: line 9: name: command not found
./.gclient: line 10: url: command not found
./.gclient: line 11: custom_deps: command not found
./.gclient: line 16: src/third_party/WebKit/LayoutTests:: No such file or directory
./.gclient: line 17: src/chrome_frame/tools/test/reference_build/chrome:: No such file or directory
./.gclient: line 18: src/chrome/tools/test/reference_build/chrome_mac:: No such file or directory
./.gclient: line 19: src/chrome/tools/test/reference_build/chrome_win:: No such file or directory
./.gclient: line 20: src/chrome/tools/test/reference_build/chrome_linux:: No such file or directory
./.gclient: line 22: syntax error near unexpected token `}'
./.gclient: line 22: `  }'

算了,那就不更新吧,直接在老版本号上build吧:

./build/install-build-deps.sh

提示我64位的kernel编译32位的代码不再获得推荐:

We no longer recommend that you use this script to install
32bit libraries on a 64bit system. Instead, consider using
the install-chroot.sh script to help you set up a 32bit
environment for building and testing 32bit versions of Chrome.

If you nonetheless want to try installing 32bit libraries
directly, you can do so by explicitly passing the --lib32
option to install-build-deps.sh.
Exiting without installing any 32bit libraries.

逗我玩呢。劝我改用install-chroot.sh?

./build/install-chroot.sh

The following targets are available to be installed in a chroot:
   1: breezy
   2: dapper
   3: edgy
  26: stable
  27: testing
  28: trusty
  29: unstable
  30: utopic
  31: vivid
  32: warty
  33: wheezy
  34: woody

You are running a 64bit kernel. This allows you to install either a
32bit or a 64bit chroot environment. Which one do you want (32, 64) 32

I: Retrieving Release
W: Cannot check Release signature; keyring file not available /usr/share/keyrings/debian-archive-keyring.gpg
I: Retrieving Packages

算了,还是取消用这个编译吧:加上--lib32

./build/install-build-deps.sh --lib32

build/gyp_chromium -Dflag1=value1 -Dflag2=value2

然后编译:make chrome -j4

出错了:

net/base/x509_certificate_nss.cc: In function ‘void net::{anonymous}::ParsePrincipal(CERTName*, net::CertPrincipal*)’:
net/base/x509_certificate_nss.cc:75:46: error: invalid conversion from ‘char* (*)(const CERTName*) {aka char* (*)(const CERTNameStr*)}’ to ‘CERTGetNameFunc {aka char* (*)(CERTNameStr*)}’ [-fpermissive]

改之:


  // Get CN, L, S, and C.

#if Michael_Chromium_Patch

      CERTGetNameFunc get_name_funcs[4] = {
               (char*(*)(CERTNameStr*))CERT_GetCommonName, (char*(*)(CERTNameStr*))CERT_GetLocalityName,
              (char*(*)(CERTNameStr*))CERT_GetStateName, (char*(*)(CERTNameStr*))CERT_GetCountryName };
#else
       CERTGetNameFunc get_name_funcs[4] = {
               CERT_GetCommonName, CERT_GetLocalityName,
               CERT_GetStateName, CERT_GetCountryName };

#endif

make chrome -j

  AR(target) out/Debug/obj.target/third_party/WebKit/Source/WebKit/chromium/libwebkit.a
  COPY out/Debug/chrome-wrapper
  ACTION Generating manpage out/Debug/chrome.1
  COPY out/Debug/xdg-mime
  COPY out/Debug/xdg-settings
  COPY out/Debug/product_logo_48.png
  CXX(target) out/Debug/obj.target/chrome/chrome/app/chrome_main.o
  CXX(target) out/Debug/obj.target/chrome/chrome/app/chrome_exe_main_gtk.o
  CXX(target) out/Debug/obj.target/chrome/chrome/app/chrome_main_delegate.o
  LINK(target) out/Debug/chrome
                                                                                ^[      LINK(target) out/Debug/chrome: Finished

谢天谢地,最终过了!

cd out/Debug and run chrome

My god! crash :(

[2560:2560:1091621926:FATAL:field_trial.cc(183)] Check failed: next_group_number_ > kDefaultGroupNumber + 1 (1 vs. 1)
Backtrace:
    base::debug::StackTrace::StackTrace() [0x55555743f072]
    logging::LogMessage::~LogMessage() [0x555557469635]
    base::FieldTrial::SetForced() [0x55555742d1b2]
    VariationsService::CreateTrialFromStudy() [0x55555713a558]
    VariationsService::CreateTrialsFromSeed() [0x555557138e28]
    ChromeBrowserMainParts::SetupMetricsAndFieldTrials() [0x5555570da3bd]
    ChromeBrowserMainParts::PreCreateThreadsImpl() [0x5555570ddf1a]
    ChromeBrowserMainParts::PreCreateThreads() [0x5555570dcfea]
    content::BrowserMainLoop::CreateThreads() [0x555559b7c890]
    (anonymous namespace)::BrowserMainRunnerImpl::Initialize() [0x555559b7e97f]
    BrowserMain() [0x555559b7b34b]
    content::RunNamedProcessTypeMain() [0x5555573aff00]
    content::ContentMainRunnerImpl::Run() [0x5555573b0b74]
    content::ContentMain() [0x5555573af573]
    ChromeMain [0x55555668447d]
    main [0x55555668443c]
    0x7ffff203f76d
    0x555556684349

调试一下吧:
gdb chrome and show call stack:

[32321:32321:43801153618:WARNING:zygote_host_impl_linux.cc(165)] Running without the SUID sandbox! See http://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment for more information on developing with the sandbox on.
[32347:32347:43817254895:INFO:gl_context_glx.cc(135)] Offscreen context was direct.
Segmentation fault (core dumped)

  1. // This will be called after the command-line has been mutated by about:flags  
  2. void ChromeBrowserMainParts::SetupMetricsAndFieldTrials() {  
  3.  
  4.   MetricsService* metrics = browser_process_->metrics_service();  
  5.   if (IsMetricsReportingEnabled())  
  6.     metrics->ForceClientIdCreation();  // Needed below.  
  7.   field_trial_list_.reset(  
  8.       new base::FieldTrialList(metrics->GetEntropySource()));  
  9.   
  10.   // Ensure any field trials specified on the command line are initialized.  
  11.   // Also stop the metrics service so that we don't pollute UMA.  
  12. #ifndef NDEBUG  
  13.   const CommandLine* command_line = CommandLine::ForCurrentProcess();  
  14.   if (command_line->HasSwitch(switches::kForceFieldTrials)) {  
  15.     std::string persistent = command_line->GetSwitchValueASCII(  
  16.         switches::kForceFieldTrials);  
  17.     bool ret = base::FieldTrialList::CreateTrialsFromString(persistent);  
  18.     CHECK(ret) << "Invalid --" << switches::kForceFieldTrials <<  
  19.                   " list specified.";  
  20.   }  
  21. #endif  // NDEBUG  
  22.   
  23.   VariationsService* variations_service =  
  24.       browser_process_->variations_service();  
  25.   variations_service->CreateTrialsFromSeed(browser_process_->local_state());  
  26. }  

  1. void BrowserProcessImpl::CreateLocalState() {  
  2.   DCHECK(!created_local_state_ && local_state_.get() == NULL);  
  3.   created_local_state_ = true;  
  4.   
  5.   FilePath local_state_path;  
  6.   PathService::Get(chrome::FILE_LOCAL_STATE, &local_state_path);  
  7.   local_state_.reset(  
  8.       PrefService::CreatePrefService(local_state_path, policy_service(), NULL,  
  9.                                      false));  
  10.   
  11.   // Initialize the prefs of the local state.  
  12.   browser::RegisterLocalState(local_state_.get());  
  13. }  

  1. // TODO(brettw): this function does not handle long paths (filename > MAX_PATH)  
  2. // characters). This isn't supported very well by Windows right now, so it is  
  3. // moot, but we should keep this in mind for the future.  
  4. // static  
  5. bool PathService::Get(int key, FilePath* result) {   
  6.   // special case the current directory because it can never be cached  
  7.   if (key == base::DIR_CURRENT)  
  8.     return file_util::GetCurrentDirectory(result);  
  9.   
  10.   if (GetFromCache(key, result))  
  11.     return true;  
  12.   
  13.   
  14.   AddToCache(key, path);  
  15.   
  16.   *result = path;  
  17.   return true;  
  18. }  
坏蛋最终现身了。注意看路径path_
p *result
$60 = {static kSeparators = 0x55555ad404c0 "/", static kCurrentDirectory = <same as static member of an already seen type>,
  static kParentDirectory = <same as static member of an already seen type>, static kExtensionSeparator = 46 '.', path_ =
    "/home/michael/.config/chromium/Local State"}
(gdb) 

删除这个Local State,chrome就跑起来了,原因就是第一次run起来chrome后,我点击了“是否恢复上次的网页”的是button,导致本地状态解析出错。请看此文件末端的一堆seed数据(它就是老鼠):
Local State:


   "uninstall_metrics": {
      "installation_date2": "1426134422",
      "launch_count": "2"
   },
   "user_experience_metrics": {
      "low_entropy_source": 2024,
      "session_id": 1,
      "stability": {
         "breakpad_registration_fail": 2,
         "breakpad_registration_ok": 0,
         "crash_count": 1,
         "debugger_not_present": 2,
         "debugger_present": 0,
         "exited_cleanly": false,
         "incomplete_session_end_count": 0,
         "last_timestamp_sec": "0",
         "launch_count": 2,
         "launch_time_sec": "1426138598",
         "page_load_count": 0,
         "renderer_crash_count": 0,
         "renderer_hang_count": 0,
         "session_end_completed": true,
         "stats_buildtime": "1426159202",
         "stats_version": "21.0.1167.0-64-devel"
      }
   },
   " variations_seed": "CigxMTZhNmMwMTN1Z2dlc3RVbmlmaWNhdGlvbl9BNV9TdGFibGUQARj/k8oBIP......
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Chrome免安装版本是一种不需要事先下载和安装的Chrome浏览器版本,它将完整的浏览器功能打包成一个可执行文件。以下是一些常见的Chrome免安装版本的汇总: 1. Chrome Portable:这是Chrome的官方免安装版本,用户可以将其存储在U盘或移动硬盘上,并在需要时随时在任何计算机上运行。它具有与正式版Chrome相同的功能和兼容性,并且可以通过自动更新来获取最新的安全补丁和功能更新。 2. SRWare Iron:这是一个基于Chromium项目的开源浏览器,它与Google Chrome一样快速和稳定,但剔除了Google的追踪和隐私问题。此浏览器的主要目标是提供更安全和隐私保护的浏览体验。 3. Comodo Dragon:这是基于Chromium项目的另一个开源浏览器,它专注于提供安全性和隐私保护。Comodo Dragon集成了一些额外的安全功能,例如网站验证和HTTPS强制加密等,以保护用户免受恶意软件和网络攻击。 4. Cent Browser:这是另一个基于Chromium项目的浏览器,它相对于Chrome提供了更多的个性化和定制选项。它还添加了一些有用的功能,例如鼠标手势,快速命令,多线程下载等,以增强用户的浏览体验。 总之,Chrome免安装版本是为了方便用户在不同计算机上轻松访问Chrome浏览器而设计的。无论是出于便携性、隐私保护还是个性化需求,用户可以根据自己的偏好选择适合自己的版本。 ### 回答2: Google Chrome是一款非常受欢迎的网络浏览器,它提供了许多有用的功能和插件,使用户能够更高效地浏览互联网。不过有时候我们可能需要在没有管理员权限的电脑上使用Chrome,或者我们可能不想在电脑上安装任何软件。为了满足这些需求,Google也提供了免安装版本的Chrome。 免安装版本的Chrome可以直接运行,无需进行任何安装操作。用户只需要下载免安装版本的Chrome,并解压缩后即可使用。由于不需要进行安装,免安装版本的Chrome非常适合在公共电脑上使用,比如在网吧、图书馆或学校等场所。 免安装版本的Chrome可以从Google官方网站上下载,只需要搜索关键词“Chrome免安装版”即可找到下载页面。用户可以根据自己的操作系统选择适合的版本进行下载。免安装版的Chrome与普通版的功能和性能完全一样,用户可以享受到同样流畅的浏览体验。 当用户下载完免安装版本的Chrome后,只需要将压缩包解压缩到自己想要的位置,然后点击可执行文件即可运行Chrome。免安装版本的Chrome会自动调用用户电脑上的默认浏览器设置,并将自身设置为默认浏览器。用户还可以根据自己的需要进行个性化设置,比如更改浏览器主题、安装插件等。 不过需要注意的是,由于免安装版本的Chrome没有自动更新功能,所以用户需要定期从官方网站上下载最新版本的免安装版,并替换掉原有的版本。这样才能保证使用的是最新的功能和修复了的安全漏洞。 总之,免安装版本的Chrome是一种方便快捷的方式,让用户可以在没有管理员权限或不想安装软件的情况下使用Chrome浏览器。只要下载并解压缩即可运行,使用体验与普通版完全一致。用户可以从Google官方网站上下载适合自己操作系统的免安装版Chrome,并定期更新以获取最新功能和安全保障。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值