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)

[cpp] view plaincopy

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

[cpp] view plaincopy

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

[cpp] view plaincopy

  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. if (GetFromCache(key, result))
  10. return true;
  11. AddToCache(key, path);
  12. *result = path;
  13. return true;
  14. }

坏蛋终于现身了,注意看路径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后,我点击了“是否恢复上次的网页”的是按钮,导致本地状态解析出错,请看此文件末端的一堆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......

时间: 2024-10-05 08:51:44

Chrome 编译错误汇总的相关文章

iOS 各种编译错误汇总

1.error: macro names must be identifiers YourProject_prefix.pch 原因: 因为你弄脏了预处理器宏,在它处于<Multiple Values>的时候修改了它 解决方法: Configiration选择All Configirations,清空它 然后分别重新定义你的Debug,Release,Distributin预处理器宏吧 2.warning: no rule to process file '$(PROJECT_DIR)/Loa

flash/flex 编译错误汇总

来源:http://blog.chinaunix.net/uid-366408-id-116463.html 代码 消息 说明   1000 对 %s 的引用不明确. 引用可能指向多项.例如,下面使用了 rss 和 xml 命名空间.每个命名空间为 hello()函数定义了不同的值.trace(hello()) 语句返回此错误,因为它无法确定使用哪个命名空间. private namespace rss; private namespace xml; public function ErrorE

php各种编译错误汇总

PHP编译安装时常见错误解决办法,php编译常见错误 This article is post on https://coderwall.com/p/ggmpfa configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution复制代码 代码如下:yum -y install libxslt-devel configure: error: Could not find net-s

quartus编译错误汇总

-------1.Verilog HDL syntax error at xxxx.v near text "ā",expecting";" 出现此类错误一般有以下五种情况: 1.某一句缺少“:” 2.begin和end不对应 3.某一个变量在always语句中等号的左边却没有定义成reg型 4.输入法导致,也就是符号的的半角和全角 5. “<=” 两侧表达式距离过远 原文地址:https://www.cnblogs.com/ArChieve/p/118336

Android入门级编译错误汇总

1  描写叙述:  项目常常须要引用别人的libraryproject,在选项中add进来后,点击应用或者确定.关闭页面. 回到代码中却发现无法链接,又一次打开properties查看,发现导入的project总是提示红色.add失败的样子. 原因: 项目与引用的library不在一个工作区,将两个project放入一个工作区就可以 2 描写叙述:import工程时提示some projects cannot be imported because they already exist in t

Xcode编译错误和警告汇总&lt;转&gt;

1.error: macro names must be identifiers YourProject_prefix.pch 原因: 因为你弄脏了预处理器宏,在它处于<Multiple Values>的时候修改了它 解决方法: Configiration选择All Configirations,清空它 然后分别重新定义你的Debug,Release,Distributin预处理器宏吧 2.warning: no rule to process file '$(PROJECT_DIR)/Loa

PHP安装编译错误及解决办法

今天搭建LAMP环境是编译PHP时出现的错误汇总. 错误: configure: error: xml2-config not found. Please check your libxml2 installation. 解决办法: yum install -y libxml2-devel 错误: configure: error: Cannot find OpenSSL's <evp.h> 解决办法: yum install -y openssl openssl-devel 错误: chec

C#新手常犯的错误汇总

本文所述为C#新手常犯的错误,但是实际上很多有经验的程序员也经常犯这些错误,对此特别整理了一下,供大家参考.具体如下: 1.遍历List的错误 ,比如如下代码: List<String> strList =newList<String> for(int i =0; i<strList.Count; i++) { strList.RemoveAt(i); } 这段代码看上去是删除了所有元素,实际上每次调用RemoveAt方法会导致List元素索引重排,最后导致元素没有完全删除.

Quartus II 中 Verilog 常见警告/错误汇总

Verilog 常见错误汇总 1.Found clock-sensitive change during active clock edge at time <time> on register "<name>" 原因:vector source file中时钟敏感信号(如:数据,允许端,清零,同步加载等)在时钟的边缘同时变化.而时钟敏感信号是不能在时钟边沿变化的.其后果为导致结果不正确. 措施:编辑vector source file 2.Verilog HD