第一次编译chrome遇到了n个问题,非常苦恼
多亏了deepseek,把问题扔给它给我一些提示,不然肯定很难搞出来
我总结了一下常见的问题:系统代理问题,内存不足问题,编码问题
还有一个问题是不知道为什么我在编译的过程中,报错签名工具 (signtool.exe
) 无法连接到指定的时间戳服务器,刚开始我还以为是我代理的问题,后来我通过换网络打开都打不开,不知道是不是他的时间戳服务器宕机了。最终是通过删除环境变量http_proxy和https_proxy之后,在运行就好了。
系统代理问题:
它在编译时可能会去某个时间戳服务器上签名,所有还是需要设置系统代理的
在环境变量里添加 http_proxy=http://127.0.0.1:7890和https_proxy=http://127.0.0.1:7890
内存不足问题
autoninja -C out\Default
autoninja会默认根据cpu核心数量进行动态设置编译任务数,可是我在使用他动态调节任务数的时候,经常报错,提示内存不足,比如
..\..\third_party\llvm-build\Release+Asserts\bin\lld-link.exe "/OUT:./web_application_fuzztests.exe" /nologo -libpath:../../third_party/llvm-build/Release+Asserts/lib/clang/21/lib/windows -libpath:D:\Program_Files\Microsoft\visualstudio\2022\VC\Tools\MSVC\14.44.35207\ATLMFC\lib\x64 -libpath:D:\Program_Files\Microsoft\visualstudio\2022\VC\Tools\MSVC\14.44.35207\lib\x64 "-libpath:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "-libpath:C:\Program Files (x86)\Windows Kits\10\lib\10.0.26100.0\ucrt\x64" "-libpath:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.26100.0\\um\x64" /MACHINE:X64 "/PDB:./web_application_fuzztests.exe.pdb" "@./web_application_fuzztests.exe.rsp"
build step: link "./web_application_fuzztests.exe"
stderr:
LLVM ERROR: out of memory
Allocation failed
解决办法是:添加自定义设置任务数,如果电脑配置不高,还是设置成2个任务数,指令为:
autoninja -C out\Default -j2
第三是系统编码问题
由于我的电脑是中文编码是gbk,他在运行读取文件时,经常报gbk等编码错误
比如报错信息
D:/depot_tools/bootstrap-2@3_11_8_chromium_35_bin/python3/bin/python3.exe ../../build/win/set_appcontainer_acls.py --stamp=obj/build/config/win/acls.stamp --dir=.
build step: __build_config_win_set_appcontainer_acls___build_toolchain_win_win_clang_x64__rule "./obj/build/config/win/acls.stamp"
stderr:
Traceback (most recent call last):
File "E:\mySrc_chrome\src\build\win\set_appcontainer_acls.py", line 35, in <module>
main()
File "E:\mySrc_chrome\src\build\win\set_appcontainer_acls.py", line 29, in main
common.set_lpac_acls(os.path.abspath(args.dir))
File "E:\mySrc_chrome\src\testing\scripts\common.py", line 68, in set_lpac_acls
existing_acls = subprocess.check_output(['icacls', acl_dir],
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\depot_tools\bootstrap-2@3_11_8_chromium_35_bin\python3\bin\Lib\subprocess.py", line 466, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\depot_tools\bootstrap-2@3_11_8_chromium_35_bin\python3\bin\Lib\subprocess.py", line 550, in run
stdout, stderr = process.communicate(input, timeout=timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\depot_tools\bootstrap-2@3_11_8_chromium_35_bin\python3\bin\Lib\subprocess.py", line 1196, in communicate
stdout = self.stdout.read()
^^^^^^^^^^^^^^^^^^
File "<frozen codecs>", line 322, in decode
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcb in position 62: invalid continuation byte
build failed
local:192 remote:0 cache:0 fallback:0 retry:0 skip:7911
fs: ops: 140840(err:18179) / r:85003(err:0) 1.76GiB / w:260(err:6) 71.12MiB
解决办法是给电脑系统把gbk编码设置成utf-8就好了
-
打开控制面板 → 区域(或运行
intl.cpl
) -
进入 管理 选项卡 → 点击 更改系统区域设置…
-
勾选 “Beta 版:使用 Unicode UTF-8 提供全球语言支持”
-
重启电脑使设置生效
备选时间戳服务器报错解决办法
如果是windows10系统可以在目录/src/chrome/updater/win/signing/signing.py下查找http://timestamp.digicert.com默认的时间戳签名地址更换成其他的时间戳服务器地址比如 http://timestamp.sectigo.com
以上是我此次记录的编译中遇到的问题,希望对你有所帮助。
暂无评论内容