如何為 ARM 交叉編譯 Chromium?
目標
我需要在
mini210s
執行Linux 3.0.8 armv7l的 FriendlyARM 上安裝 Chromium環境
- 帶有 Ubuntu Precise64 的 Vagrant 盒子
depot_tools
按照這些指南安裝Get-the-code和 Linux Chromium ARM工具鏈 depot_tools
得到後
depot_tools
:vagrant@vagrant:~/depot_tools$ fetch chromium
環境變數
export GYP_CROSSCOMPILE=1 export GYP_DEFINES="target_arch=arm arm_float_abi=hard"
依賴項
vagrant@vagrant:~/depot_tools/src$ ./chrome/installer/linux/sysroot_scripts/install-debian.wheezy.sysroot.py --arch=arm Installing Debian Wheezy arm root image: /home/vagrant/depot_tools/src/chrome/installer/linux/debian_wheezy_arm-sysroot Downloading http://storage.googleapis.com/chrome-linux-sysroot/toolchain/285950/debian_wheezy_arm_sysroot.tgz build/install-build-deps.sh --arm build/install-build-deps-android.sh gclient sync
編譯
build/gyp_chromium -Goutput_dir=out_arm ninja -C out_arm/Debug chrome
錯誤
vagrant@vagrant:~/depot_tools/src$ ninja -C out_arm/Debug chrome ninja: Entering directory `out_arm/Debug' [222/18316] CXX obj/third_party/webrtc/modules/audio_coding/codecs/audio_encoder_interface.audio_encoder.o FAILED: ../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/third_party/webrtc/modules/audio_coding/codecs/audio_encoder_interface.audio_encoder.o.d -DV8_DEPRECATION_WARNINGS -D_FILE_OFFSET_BITS=64 -DCHROMIUM_BUILD -DCR_CLANG_REVISION=223108 -DTOOLKIT_VIEWS=1 -DUI_COMPOSITOR_IMAGE_TRANSPORT -DUSE_AURA=1 -DUSE_ASH=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_DEFAULT_RENDER_THEME=1 -DUSE_LIBJPEG_TURBO=1 -DUSE_X11=1 -DUSE_CLIPBOARD_AURAX11=1 -DENABLE_ONE_CLICK_SIGNIN -DENABLE_PRE_SYNC_BACKUP -DENABLE_REMOTING=1 -DENABLE_WEBRTC=1 -DENABLE_PEPPER_CDMS -DENABLE_CONFIGURATION_POLICY -DENABLE_NOTIFICATIONS -DUSE_UDEV -DDONT_EMBED_BUILD_METADATA -DENABLE_TASK_MANAGER=1 -DENABLE_EXTENSIONS=1 -DENABLE_PLUGINS=1 -DENABLE_SESSION_SERVICE=1 -DENABLE_THEMES=1 -DENABLE_AUTOFILL_DIALOG=1 -DENABLE_BACKGROUND=1 -DENABLE_GOOGLE_NOW=1 -DCLD_VERSION=2 -DENABLE_PRINTING=1 -DENABLE_BASIC_PRINTING=1 -DENABLE_PRINT_PREVIEW=1 -DENABLE_SPELLCHECK=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DENABLE_APP_LIST=1 -DENABLE_SETTINGS_APP=1 -DENABLE_SUPERVISED_USERS=1 -DENABLE_MDNS=1 -DENABLE_SERVICE_DISCOVERY=1 -DV8_USE_EXTERNAL_STARTUP_DATA -DWEBRTC_RESTRICT_LOGGING -DEXPAT_RELATIVE_PATH -DWEBRTC_MODULE_UTILITY_VIDEO -DWEBRTC_CHROMIUM_BUILD -DLOGGING_INSIDE_WEBRTC -DWEBRTC_ARCH_ARM -DWEBRTC_ARCH_ARM_V7 -DWEBRTC_ARCH_ARM_NEON -DWEBRTC_POSIX -DWEBRTC_LINUX -DUSE_LIBPCI=1 -DUSE_GLIB=1 -DUSE_NSS=1 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -D_DEBUG -D_GLIBCXX_DEBUG=1 -Igen -I../.. -I../../third_party/webrtc/overrides -I../../third_party -fstack-protector --param=ssp-buffer-size=4 -Werror -pthread -fno-strict-aliasing -Wall -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -Wno-reserved-user-defined-literal -Xclang -load -Xclang /home/vagrant/depot_tools/src/third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.so -Xclang -add-plugin -Xclang find-bad-constructs -fcolor-diagnostics -Wheader-hygiene -Wno-char-subscripts -Wno-unneeded-internal-declaration -Wno-covered-switch-default -Wstring-conversion -Wno-c++11-narrowing -Wno-deprecated-register -Wno-inconsistent-missing-override -target arm-linux-gnueabihf -march=armv7-a -no-integrated-as -mtune=generic-armv7-a -mfpu=neon -mfloat-abi=hard -mthumb --sysroot=/home/vagrant/depot_tools/src/chrome/installer/linux/debian_wheezy_arm-sysroot -O0 -g -gdwarf-4 -funwind-tables -Wno-undefined-bool-conversion -Wno-tautological-undefined-compare -fno-exceptions -fno-rtti -fno-threadsafe-statics -fvisibility-inlines-hidden -Wsign-compare -std=gnu++11 -c ../../third_party/webrtc/modules/audio_coding/codecs/audio_encoder.cc -o obj/third_party/webrtc/modules/audio_coding/codecs/audio_encoder_interface.audio_encoder.o /tmp/audio_encoder-f5366d.s: Assembler messages: /tmp/audio_encoder-f5366d.s:559: Internal error! Assertion failure in get_line_subseg at ../../gas/dwarf2dbg.c line 262. Please report this bug. clang: error: assembler command failed with exit code 1 (use -v to see invocation) [222/18316] ACTION Generating resources from app/generated_resources.grd ninja: build stopped: subcommand failed.
期待一些建議和線索
按照eyoung100的指示,仍然出現錯誤但進一步
vagrant@vagrant:/vagrant_data/buildhost/src$ ninja -C out/Debug chrome ninja: Entering directory `out/Debug' [369/18783] CXX obj/mojo/public/cpp/bindings/lib/mojo_cpp_bindings.array_internal.o FAILED: ../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/mojo/public/cpp/bindings/lib/mojo_cpp_bindings.array_internal.o.d -DV8_DEPRECATION_WARNINGS -D_FILE_OFFSET_BITS=64 -DCHROMIUM_BUILD -DCR_CLANG_REVISION=223108 -DCOMPONENT_BUILD -DTOOLKIT_VIEWS=1 -DUI_COMPOSITOR_IMAGE_TRANSPORT -DUSE_AURA=1 -DUSE_ASH=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_DEFAULT_RENDER_THEME=1 -DUSE_LIBJPEG_TURBO=1 -DUSE_X11=1 -DUSE_CLIPBOARD_AURAX11=1 -DENABLE_ONE_CLICK_SIGNIN -DENABLE_PRE_SYNC_BACKUP -DENABLE_REMOTING=1 -DENABLE_WEBRTC=1 -DENABLE_PEPPER_CDMS -DENABLE_CONFIGURATION_POLICY -DENABLE_NOTIFICATIONS -DUSE_UDEV -DDONT_EMBED_BUILD_METADATA -DENABLE_TASK_MANAGER=1 -DENABLE_EXTENSIONS=1 -DENABLE_PLUGINS=1 -DENABLE_SESSION_SERVICE=1 -DENABLE_THEMES=1 -DENABLE_AUTOFILL_DIALOG=1 -DENABLE_BACKGROUND=1 -DENABLE_GOOGLE_NOW=1 -DCLD_VERSION=2 -DENABLE_PRINTING=1 -DENABLE_BASIC_PRINTING=1 -DENABLE_PRINT_PREVIEW=1 -DENABLE_SPELLCHECK=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DENABLE_APP_LIST=1 -DENABLE_SETTINGS_APP=1 -DENABLE_SUPERVISED_USERS=1 -DENABLE_MDNS=1 -DENABLE_SERVICE_DISCOVERY=1 -DV8_USE_EXTERNAL_STARTUP_DATA -DUSE_LIBPCI=1 -DUSE_GLIB=1 -DUSE_NSS=1 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -D_DEBUG -D_GLIBCXX_DEBUG=1 -Igen -I../.. -fstack-protector --param=ssp-buffer-size=4 -Werror -pthread -fno-strict-aliasing -Wall -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -Wno-reserved-user-defined-literal -Xclang -load -Xclang /vagrant_data/buildhost/src/third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.so -Xclang -add-plugin -Xclang find-bad-constructs -Xclang -plugin-arg-find-bad-constructs -Xclang strict-virtual-specifiers -fcolor-diagnostics -Wheader-hygiene -Wno-char-subscripts -Wno-unneeded-internal-declaration -Wno-covered-switch-default -Wstring-conversion -Wno-c++11-narrowing -Wno-deprecated-register -Wno-inconsistent-missing-override -target arm-linux-gnueabihf -march=armv7-a -no-integrated-as -mtune=generic-armv7-a -mfpu=neon -mfloat-abi=hard -mthumb --sysroot=/vagrant_data/buildhost/src/chrome/installer/linux/debian_wheezy_arm-sysroot -O0 -g -gdwarf-4 -funwind-tables -Wno-undefined-bool-conversion -Wno-tautological-undefined-compare -fno-exceptions -fno-rtti -fno-threadsafe-statics -fvisibility-inlines-hidden -Wsign-compare -std=gnu++11 -c ../../mojo/public/cpp/bindings/lib/array_internal.cc -o obj/mojo/public/cpp/bindings/lib/mojo_cpp_bindings.array_internal.o /tmp/array_internal-a7a8d2.s: Assembler messages: /tmp/array_internal-a7a8d2.s:1182: Internal error! Assertion failure in get_line_subseg at ../../gas/dwarf2dbg.c line 262. Please report this bug. clang: error: assembler command failed with exit code 1 (use -v to see invocation) [369/18783] ACTION Generating resources from app/generated_resources.grd ninja: build stopped: subcommand failed.
在其他 Google 群組上發布的問題:
更新嘗試在 Ubuntu 14.04 (Trusty) 上交叉編譯失敗
… 與 Precise64 類似的資訊
vagrant@vagrant-ubuntu-trusty-64:/vagrant_data/buildhost/src$ ninja -C out/Debug chrome ninja: Entering directory `out/Debug' [66/18785] CXX obj/mojo/public/cpp/bindings/lib/mojo_cpp_bindings.array_internal.o FAILED: ../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/mojo/public/cpp/bindings/lib/mojo_cpp_bindings.array_internal.o.d -DV8_DEPRECATION_WARNINGS -D_FILE_OFFSET_BITS=64 -DCHROMIUM_BUILD -DCR_CLANG_REVISION=223108 -DCOMPONENT_BUILD -DTOOLKIT_VIEWS=1 -DUI_COMPOSITOR_IMAGE_TRANSPORT -DUSE_AURA=1 -DUSE_ASH=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_DEFAULT_RENDER_THEME=1 -DUSE_LIBJPEG_TURBO=1 -DUSE_X11=1 -DUSE_CLIPBOARD_AURAX11=1 -DENABLE_ONE_CLICK_SIGNIN -DENABLE_PRE_SYNC_BACKUP -DENABLE_REMOTING=1 -DENABLE_WEBRTC=1 -DENABLE_PEPPER_CDMS -DENABLE_CONFIGURATION_POLICY -DENABLE_NOTIFICATIONS -DUSE_UDEV -DDONT_EMBED_BUILD_METADATA -DENABLE_TASK_MANAGER=1 -DENABLE_EXTENSIONS=1 -DENABLE_PLUGINS=1 -DENABLE_SESSION_SERVICE=1 -DENABLE_THEMES=1 -DENABLE_AUTOFILL_DIALOG=1 -DENABLE_BACKGROUND=1 -DENABLE_GOOGLE_NOW=1 -DCLD_VERSION=2 -DENABLE_PRINTING=1 -DENABLE_BASIC_PRINTING=1 -DENABLE_PRINT_PREVIEW=1 -DENABLE_SPELLCHECK=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DENABLE_APP_LIST=1 -DENABLE_SETTINGS_APP=1 -DENABLE_SUPERVISED_USERS=1 -DENABLE_MDNS=1 -DENABLE_SERVICE_DISCOVERY=1 -DV8_USE_EXTERNAL_STARTUP_DATA -DUSE_LIBPCI=1 -DUSE_GLIB=1 -DUSE_NSS=1 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -D_DEBUG -D_GLIBCXX_DEBUG=1 -Igen -I../.. -fstack-protector --param=ssp-buffer-size=4 -Werror -pthread -fno-strict-aliasing -Wall -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -Wno-reserved-user-defined-literal -Xclang -load -Xclang /vagrant_data/buildhost/src/third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.so -Xclang -add-plugin -Xclang find-bad-constructs -Xclang -plugin-arg-find-bad-constructs -Xclang strict-virtual-specifiers -fcolor-diagnostics -Wheader-hygiene -Wno-char-subscripts -Wno-unneeded-internal-declaration -Wno-covered-switch-default -Wstring-conversion -Wno-c++11-narrowing -Wno-deprecated-register -Wno-inconsistent-missing-override -target arm-linux-gnueabihf -march=armv7-a -no-integrated-as -mtune=generic-armv7-a -mfpu=neon -mfloat-abi=hard -mthumb --sysroot=/vagrant_data/buildhost/src/chrome/installer/linux/debian_wheezy_arm-sysroot -O0 -g -gdwarf-4 -funwind-tables -Wno-undefined-bool-conversion -Wno-tautological-undefined-compare -fno-exceptions -fno-rtti -fno-threadsafe-statics -fvisibility-inlines-hidden -Wsign-compare -std=gnu++11 -c ../../mojo/public/cpp/bindings/lib/array_internal.cc -o obj/mojo/public/cpp/bindings/lib/mojo_cpp_bindings.array_internal.o /tmp/array_internal-227b6c.s: Assembler messages: /tmp/array_internal-227b6c.s:1180: Internal error! Assertion failure in get_line_subseg at ../../gas/dwarf2dbg.c line 271. Please report this bug. clang: error: assembler command failed with exit code 1 (use -v to see invocation) [66/18785] CXX obj/mojo/public/cpp/bindings/lib/mojo_cpp_bindings.message_queue.o ninja: build stopped: subcommand failed.
失敗時在 Precise64
clang=False
上使用時
chromium.gyp_env
(無環境變數)vagrant@vagrant:/vagrant_data/buildhost/src$ more ../chromium.gyp_env { 'GYP_DEFINES': 'target_arch=arm arm_float_abi=hard component=shared_library linux_use_gold_flags=1 clang=False', 'GYP_CROSSCOMPILE': 'True', }
我明白了
vagrant@vagrant:/vagrant_data/buildhost/src$ ninja -C out/Debug chrome ninja: Entering directory `out/Debug' [2/18785] CC obj/third_party/libwebp/dsp/libwebp_dsp.enc_sse2.o FAILED: cc -MMD -MF obj/third_party/libwebp/dsp/libwebp_dsp.enc_sse2.o.d -DV8_DEPRECATION_WARNINGS -D_FILE_OFFSET_BITS=64 -DCHROMIUM_BUILD -DCOMPONENT_BUILD -DTOOLKIT_VIEWS=1 -DUI_COMPOSITOR_IMAGE_TRANSPORT -DUSE_AURA=1 -DUSE_ASH=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_DEFAULT_RENDER_THEME=1 -DUSE_LIBJPEG_TURBO=1 -DUSE_X11=1 -DUSE_CLIPBOARD_AURAX11=1 -DENABLE_ONE_CLICK_SIGNIN -DENABLE_PRE_SYNC_BACKUP -DENABLE_REMOTING=1 -DENABLE_WEBRTC=1 -DENABLE_PEPPER_CDMS -DENABLE_CONFIGURATION_POLICY -DENABLE_NOTIFICATIONS -DUSE_UDEV -DDONT_EMBED_BUILD_METADATA -DENABLE_TASK_MANAGER=1 -DENABLE_EXTENSIONS=1 -DENABLE_PLUGINS=1 -DENABLE_SESSION_SERVICE=1 -DENABLE_THEMES=1 -DENABLE_AUTOFILL_DIALOG=1 -DENABLE_BACKGROUND=1 -DENABLE_GOOGLE_NOW=1 -DCLD_VERSION=2 -DENABLE_PRINTING=1 -DENABLE_BASIC_PRINTING=1 -DENABLE_PRINT_PREVIEW=1 -DENABLE_SPELLCHECK=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DENABLE_APP_LIST=1 -DENABLE_SETTINGS_APP=1 -DENABLE_SUPERVISED_USERS=1 -DENABLE_MDNS=1 -DENABLE_SERVICE_DISCOVERY=1 -DV8_USE_EXTERNAL_STARTUP_DATA -DUSE_LIBPCI=1 -DUSE_GLIB=1 -DUSE_NSS=1 -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -D_DEBUG -D_GLIBCXX_DEBUG=1 -Igen -I../../third_party/libwebp -fstack-protector --param=ssp-buffer-size=4 -pthread -fno-strict-aliasing -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -Wno-format -Wno-unused-result -march=armv7-a -mtune=generic-armv7-a -mfpu=neon -mfloat-abi=hard -mthumb --sysroot=/vagrant_data/buildhost/src/chrome/installer/linux/debian_wheezy_arm-sysroot -O0 -g -gdwarf-4 -funwind-tables -c ../../third_party/libwebp/dsp/enc_sse2.c -o obj/third_party/libwebp/dsp/libwebp_dsp.enc_sse2.o cc1: error: unrecognized command line option ‘-mfpu=neon’ cc1: error: unrecognized command line option ‘-mfloat-abi=hard’ cc1: error: unrecognized command line option ‘-mthumb’ ../../third_party/libwebp/dsp/enc_sse2.c:1:0: error: bad value (generic-armv7-a) for -mtune= switch ../../third_party/libwebp/dsp/enc_sse2.c:1:0: error: bad value (armv7-a) for -march= switch ../../third_party/libwebp/dsp/enc_sse2.c:1:0: error: bad value (generic-armv7-a) for -mtune= switch [2/18785] ACTION Generating libudev0 library loader ninja: build stopped: subcommand failed.
導出環境時在 Precise64 上。變數
clang=0
什麼時候
vagrant@vagrant:/vagrant_data/buildhost/src$ env | grep GYP GYP_CROSSCOMPILE=1 GYP_DEFINES=target_arch=arm arm_float_abi=hard component=shared_library linux_use_gold_flags=1 clang=0
我收到這個錯誤
$ ninja -C out/Debug chrome ninja: Entering directory `out/Debug' [6/18785] CXX obj/components/crash/app/crash_component_lib.crash_reporter_client.o FAILED: /usr/bin/arm-linux-gnueabihf-g++ -MMD -MF obj/components/crash/app/crash_component_lib.crash_reporter_client.o.d -DV8_DEPRECATION_WARNINGS -D_FILE_OFFSET_BITS=64 -DCHROMIUM_BUILD -DCOMPONENT_BUILD -DTOOLKIT_VIEWS=1 -DUI_COMPOSITOR_IMAGE_TRANSPORT -DUSE_AURA=1 -DUSE_ASH=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_DEFAULT_RENDER_THEME=1 -DUSE_LIBJPEG_TURBO=1 -DUSE_X11=1 -DUSE_CLIPBOARD_AURAX11=1 -DENABLE_ONE_CLICK_SIGNIN -DENABLE_PRE_SYNC_BACKUP -DENABLE_REMOTING=1 -DENABLE_WEBRTC=1 -DENABLE_PEPPER_CDMS -DENABLE_CONFIGURATION_POLICY -DENABLE_NOTIFICATIONS -DUSE_UDEV -DDONT_EMBED_BUILD_METADATA -DENABLE_TASK_MANAGER=1 -DENABLE_EXTENSIONS=1 -DENABLE_PLUGINS=1 -DENABLE_SESSION_SERVICE=1 -DENABLE_THEMES=1 -DENABLE_AUTOFILL_DIALOG=1 -DENABLE_BACKGROUND=1 -DENABLE_GOOGLE_NOW=1 -DCLD_VERSION=2 -DENABLE_PRINTING=1 -DENABLE_BASIC_PRINTING=1 -DENABLE_PRINT_PREVIEW=1 -DENABLE_SPELLCHECK=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DENABLE_APP_LIST=1 -DENABLE_SETTINGS_APP=1 -DENABLE_SUPERVISED_USERS=1 -DENABLE_MDNS=1 -DENABLE_SERVICE_DISCOVERY=1 -DV8_USE_EXTERNAL_STARTUP_DATA -DUSE_LIBPCI=1 -DUSE_GLIB=1 -DUSE_NSS=1 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -D_DEBUG -D_GLIBCXX_DEBUG=1 -Igen -I../.. -I../../breakpad/src -fstack-protector --param=ssp-buffer-size=4 -Werror -pthread -fno-strict-aliasing -Wall -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -march=armv7-a -mtune=generic-armv7-a -mfpu=neon -mfloat-abi=hard -mthumb --sysroot=/vagrant_data/buildhost/src/chrome/installer/linux/debian_wheezy_arm-sysroot -O0 -g -gdwarf-4 -funwind-tables -fno-exceptions -fno-rtti -fno-threadsafe-statics -fvisibility-inlines-hidden -Wsign-compare -Wno-abi -c ../../components/crash/app/crash_reporter_client.cc -o obj/components/crash/app/crash_component_lib.crash_reporter_client.o In file included from ../../base/basictypes.h:18:0, from ../../base/strings/string16.h:33, from ../../components/crash/app/crash_reporter_client.h:10, from ../../components/crash/app/crash_reporter_client.cc:5: ../../base/macros.h:165:3: error: identifier ‘static_assert’ will become a keyword in C++0x [-Werror=c++0x-compat] ../../base/macros.h: In function ‘Dest bit_cast(const Source&)’: ../../base/macros.h:165:3: error: there are no arguments to ‘static_assert’ that depend on a template parameter, so a declaration of ‘static_assert’ must be available [-fpermissive] ../../base/macros.h:165:3: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated) In file included from ../../components/crash/app/crash_reporter_client.h:10:0, from ../../components/crash/app/crash_reporter_client.cc:5: ../../base/strings/string16.h: At global scope: ../../base/strings/string16.h:67:3: error: expected identifier before ‘sizeof’ ../../base/strings/string16.h:67:3: error: expected ‘,’ or ‘...’ before ‘sizeof’ ../../base/strings/string16.h:67:3: error: ISO C++ forbids declaration of ‘static_assert’ with no type [-fpermissive] In file included from ../../base/files/file_path.h:111:0, from ../../components/crash/app/crash_reporter_client.cc:7: ../../base/containers/hash_tables.h:171:61: error: ‘>>’ operator will be treated as two right angle brackets in C++0x [-Werror=c++0x-compat] ../../base/containers/hash_tables.h:171:61: note: suggest parentheses around ‘>>’ expression ../../base/containers/hash_tables.h:171:61: error: ‘>>’ should be ‘> >’ within a nested template argument list ../../base/containers/hash_tables.h:172:1: error: expected unqualified-id before ‘using’ ../../base/containers/hash_tables.h:177:61: error: ‘>>’ operator will be treated as two right angle brackets in C++0x [-Werror=c++0x-compat] ../../base/containers/hash_tables.h:177:61: note: suggest parentheses around ‘>>’ expression ../../base/containers/hash_tables.h:177:61: error: ‘>>’ should be ‘> >’ within a nested template argument list ../../base/containers/hash_tables.h:178:1: error: expected unqualified-id before ‘using’ ../../base/containers/hash_tables.h:184:42: error: ‘>>’ operator will be treated as two right angle brackets in C++0x [-Werror=c++0x-compat] ../../base/containers/hash_tables.h:184:42: note: suggest parentheses around ‘>>’ expression ../../base/containers/hash_tables.h:184:42: error: spurious ‘>>’, use ‘>’ to terminate a template argument list ../../base/containers/hash_tables.h:185:1: error: expected ‘>’ before ‘using’ ../../base/containers/hash_tables.h:186:68: error: expected unqualified-id before ‘;’ token ../../base/containers/hash_tables.h:191:42: error: ‘>>’ operator will be treated as two right angle brackets in C++0x [-Werror=c++0x-compat] ../../base/containers/hash_tables.h:191:42: note: suggest parentheses around ‘>>’ expression ../../base/containers/hash_tables.h:191:42: error: spurious ‘>>’, use ‘>’ to terminate a template argument list ../../base/containers/hash_tables.h:192:1: error: expected ‘>’ before ‘using’ ../../base/containers/hash_tables.h:192:76: error: expected unqualified-id before ‘;’ token cc1plus: all warnings being treated as errors [6/18785] ACTION Generating resources from blink_resources.grd ninja: build stopped: subcommand failed.
編譯完成成功
在 Precise64 4GB 記憶體 Vagrant VM 上
環境
GYP_CROSSCOMPILE=1 GYP_DEFINES=target_arch=arm arm_float_abi=hard component=shared_library linux_use_gold_flags=1
並內置發布模式
ninja -v -C out/Release chrome vagrant@vagrant:~/chromium/buildhost/src/out/Release$ ls build.ninja gen icudtl.dat libpdf.so nacl_bootstrap_raw nacl_irt_arm.nexe.debug.raw protoc resources yasm chrome genmacro java_mojo libpdf.so.TOC nacl_helper natives_blob.bin pseudo_locales resources.pak chrome.1 genmodule keyboard_resources.pak libyuv.a nacl_helper_bootstrap obj pyproto snapshot_blob.bin chrome_100_percent.pak genperf lib libyuv_neon.a nacl_irt_arm.nexe obj.host re2c tls_edit chrome-wrapper genstring libffmpegsumo.so locales nacl_irt_arm.nexe.cmd pnacl remoting_locales xdg-mime
和
vagrant@vagrant:~/chromium/buildhost/src/out/Release$ ls -alh chrome -rwxrwxr-x 1 vagrant vagrant 39M Jan 12 22:47 chrome
點擊這裡回復如何在我的裸 Linux 3.0.8 armv7l 上安裝 Chrome?
現在我在工作,我會寫一個逐步的答案。首先,您似乎以錯誤的順序執行這些步驟。因此,我將按照它們應該執行的順序對這些步驟進行編號。
mkdir -pv ~/chromium
cd ~/chromium
git config --global user.name “Joel Maranhao”
git config --global user.email “youremail@example.com”
git config --global core.autocrlf false
git config --global core.filemode false
git config --global color.ui true
git clone https://chromium.googlesource.com/chromium/tools/depot_tools
export PATH=$PATH:~/chromium/depot_tools
見更新說明 1mkdir -v ~/chromium/buildhost
見更新說明 2cd ../buildhost
見更新說明 2fetch --nohooks chromium
cd src && ./build/install-build-deps.sh
見註 3sudo apt-get install gcc-arm-linux-gnueabihf
sudo apt-get install g++-4.8-multilib-arm-linux-gnueabihf
./build/install-build-deps.sh --arm
見註 3gclient sync
GYP_CROSSCOMPILE=1 GYP_DEFINES=target_arch=arm arm_float_abi=hard component=shared_library linux_use_gold_flags=1
見註 4gclient runhooks
ninja -C out/Debug chrome
注意步驟 17 - 19。步驟 18 替換文件 chromium.gyp_env 中配方 2 中的導出語句(這有效地將建構編譯器切換到
clang
)。第 19 步導入 chromium.gyp_env 設置,並以正確的順序執行正確的建構腳本。警告:測試步驟
我將在我的 XUbuntu VM 上測試這些步驟並報告/更新等。
更新說明
PATH
如果您要多次執行此操作,建議將更改永久保存到變數。找到以下內容:
# set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi
在
$HOME\.profile
. 添加PATH=$PATH:~/chromium/depot_tools
,使最終if
看起來像:
# set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" PATH=$PATH:~/chromium/depot_tools fi
如果需要,創建一個
$HOME/bin
目錄(它在我的 VM 上不存在),然後註銷並重新登錄。
- 從 Studying your Post 開始,在從儲存庫下載 Gigs 和 Gigs 數據時,我看到您執行了
fetch
腳本並將原始碼下載到depot_tools
目錄中。這是一個常見的錯誤,可以通過創建一個單獨的目錄來輕鬆糾正,就像我所做的那樣。這使管理和操作建構文件所需的工具與您正在建構的項目分開。這也確保了您正在建構的項目不會被用於建構它們的工具污染。- 第一遍
build-deps.sh
下載所有建構工具,無論是否交叉編譯。如果腳本抱怨 Held Packages,則需要執行第 14 步和第 15 步。第二遍(Step 16),設置交叉編譯。隨著建構的進行,我將更新此註釋。- 出於某種原因,我和 OP 都遇到了
gyp_env
文件問題。因此,我更新了第 18 步以包含所需的導出。如果有興趣使用該gyp_env
文件,請參閱Gyp 使用者文件、配置建構和通用 Gyp 建構參數