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)
- // This will be called after the command-line has been mutated by about:flags
- void ChromeBrowserMainParts::SetupMetricsAndFieldTrials() {
- MetricsService* metrics = browser_process_->metrics_service();
- if (IsMetricsReportingEnabled())
- metrics->ForceClientIdCreation(); // Needed below.
- field_trial_list_.reset(
- new base::FieldTrialList(metrics->GetEntropySource()));
- // Ensure any field trials specified on the command line are initialized.
- // Also stop the metrics service so that we don't pollute UMA.
- #ifndef NDEBUG
- const CommandLine* command_line = CommandLine::ForCurrentProcess();
- if (command_line->HasSwitch(switches::kForceFieldTrials)) {
- std::string persistent = command_line->GetSwitchValueASCII(
- switches::kForceFieldTrials);
- bool ret = base::FieldTrialList::CreateTrialsFromString(persistent);
- CHECK(ret) << "Invalid --" << switches::kForceFieldTrials <<
- " list specified.";
- }
- #endif // NDEBUG
- VariationsService* variations_service =
- browser_process_->variations_service();
- variations_service->CreateTrialsFromSeed(browser_process_->local_state());
- }
- void BrowserProcessImpl::CreateLocalState() {
- DCHECK(!created_local_state_ && local_state_.get() == NULL);
- created_local_state_ = true;
- FilePath local_state_path;
- PathService::Get(chrome::FILE_LOCAL_STATE, &local_state_path);
- local_state_.reset(
- PrefService::CreatePrefService(local_state_path, policy_service(), NULL,
- false));
- // Initialize the prefs of the local state.
- browser::RegisterLocalState(local_state_.get());
- }
- // TODO(brettw): this function does not handle long paths (filename > MAX_PATH)
- // characters). This isn't supported very well by Windows right now, so it is
- // moot, but we should keep this in mind for the future.
- // static
- bool PathService::Get(int key, FilePath* result) {
- // special case the current directory because it can never be cached
- if (key == base::DIR_CURRENT)
- return file_util::GetCurrentDirectory(result);
- if (GetFromCache(key, result))
- return true;
- AddToCache(key, path);
- *result = path;
- return true;
- }
坏蛋最终现身了。注意看路径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......
Chrome 编译错误汇总的更多相关文章
- openbmc编译错误汇总,持续更新,建议收藏
本文汇总自己在编译openbmc时遇到的一些问题及解决思路,希望对有兴趣研究openbmc的同学有一些帮助. 项目地址:https://github.com/openbmc/openbmc 编译步骤: ...
- php各种编译错误汇总
PHP编译安装时常见错误解决办法,php编译常见错误 This article is post on https://coderwall.com/p/ggmpfa configure: error: ...
- flash/flex 编译错误汇总
来源:http://blog.chinaunix.net/uid-366408-id-116463.html 代码 消息 说明 1000 对 %s 的引用不明确. 引用可能指向多项.例如,下面使用 ...
- iOS 各种编译错误汇总
1.error: macro names must be identifiers YourProject_prefix.pch 原因: 因为你弄脏了预处理器宏,在它处于<Multiple Val ...
- Android:JACK编译错误汇总及解决
jack server交互命令: jack-admin start-server jack-admin kill-server jack-admin list-server jack-admin un ...
- C++ 中的导致编译错误汇总
多少年来,各路英雄好汉,八方神犇大佬,在CE中饮恨退役. OI的CE,还是那样熟悉的味道. (博主只能想到这么多,欢迎大家来补充) 1.变量名和内置函数冲突?!?! C++内置函数很多很多,许多你不知 ...
- Android入门级编译错误汇总
1 描写叙述: 项目常常须要引用别人的libraryproject,在选项中add进来后,点击应用或者确定.关闭页面. 回到代码中却发现无法链接,又一次打开properties查看,发现导入的pr ...
- MDK5 STM32编译问题汇总
MDK5 STM32编译问题汇总 WIN8.KEIL-MDK-5 编译时,出现弹窗"The ARM C/C++ Compiler 已停止工作",关闭弹窗后,编译输出的窗口中出现如下 ...
- Entity Framework学习笔记——错误汇总
之前的小项目做完了,到了总结经验和更新学习笔记的时间了.开始正题之前先啰嗦一下,对之前的学习目标进行一个调整:“根据代码生成表”与“生成数据库脚本和变更脚本”合并为“Code First模式日常使用篇 ...
随机推荐
- 【docker】linux系统centOS 7上安装docker
要求: 一个centOS 7系统 虚拟就上安装CentOS 7步骤 本文操作在本机上使用xshell连接虚拟机上的centOS 7进行操作 1.Docker 要求 CentOS 系统的内核版本高于 ...
- 编码原则:必须使用的 TODO
结构 // TODO:JS ParentId 不要使用硬编码. var parentId = record.get('ParentId'); var parentNode = me.getStore( ...
- [GIt] 团队工作效率分析工具gitstats
copy : http://www.cnblogs.com/ToDoToTry/p/4311637.html 如果你是团队领导,关心团队的开发效率和工作激情:如果你是开源软件开发者,维护者某个repo ...
- Spring Validation
Spring Validation模块用于表单数据验证配置,示例如下 依赖Jar包 <dependency> <groupId>javax.validation</gro ...
- 22.线程通信Condition
Condition 通过此对象可以与lock实现组合使用,为每个对象提供多个等待,实现多个阻塞队列. package dmeo9; import java.util.concurrent.lo ...
- 【BZOJ】【2527】【POI2011】Meteors
整体二分+树状数组 整体二分……感谢zyf提供的入门题 简单粗暴的做法:枚举每一个国家,二分他的$w_i$,然后计算……然而这样效率很低…… 整体二分就是:对所有的国家一起进行二分,$w_i$在mid ...
- 附1 rabbitmq常用命令
1.rabbitmq的启动和停止 rabbitmq-server (前台启动) rabbitmq-server -detached(后台启动) rabbitmqctl stop(停止) 2.查看rab ...
- JAVASCRIPT加密方法,JS加密解密综述(7种)
一:最简单的加密解密 对于JAVASCRIPT函数escape()和unescape()想必是比较了解啦(很多网页加密在用它们),分别是编码和解码字符串,比如例子代码 用escape()函数加密后变为 ...
- Android -- 点击双下返回退出程序
背景 现在好多apk ...
- 给MySQL中某表增加一个新字段,设为主键值为自动增长。
alter table test_tb add ID int(10) primary key AUTO_INCREMENT; 设定完成后,原有记录的该字段会增加并自动设上值.以后的值会在已有记录的最 ...