• 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......
  • 相关阅读:
    NowCoder数列(矩阵快速幂变式)
    P1147 连续自然数和(思维题)
    P1029 最大公约数和最小公倍数问题(思维题)
    Diophantus of Alexandria
    欧拉筛法求素数( 洛谷)
    欧拉函数
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/6710750.html
Copyright © 2020-2023  润新知