ARM用Chromiumブラウザのコンパイル(2019)

ARM用Chromiumブラウザのコンパイル(2019)

Ubuntu 18、16、14でChromium for armをコンパイルしようとしましたが、すべて固有の問題があります(ほとんど古く、存在しないパッケージ)。 amd64用のビルドはすでに完全に機能しているため、環境が比較的良いことがわかります。

私はこれに従いましたページしかし、それは深く入りません。

私はこれを理解しようとしました。人の問題しかし、これは非常に古く、従うのは非常に困難です。

現在、私はこれを最高の成功で続けています。https://www.olimex.com/forum/index.php?topic=4109.0

初期化Dockerファイルは次のとおりです。

FROM ubuntu:xenial

RUN apt-get update && \
apt-get -y install build-essential \
                   git \
                   python \
                   gcc-arm-linux-gnueabihf \
                   g++-4.8-multilib-arm-linux-gnueabihf \
                   sudo

RUN apt-get -y install wget

RUN apt-get install -y python-software-properties \
                   software-properties-common

RUN apt-get update

RUN echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections && \
apt-get install -y ttf-mscorefonts-installer

RUN apt-get install -y gcc-4.8-multilib g++-4.8-multilib

Docker内で実行されるビルドスクリプトは次のとおりです。

#!/bin/sh

ROOT_DIR=/root
CHROM_DIR="$ROOT_DIR/chromium"

apt-get update

cd "$ROOT_DIR"
mkdir -pv "$CHROM_DIR"
cd "$CHROM_DIR"

git config --global user.name "[USER]" &&
git config --global user.email "[EMAIL]" &&
git config --global core.autocrlf false &&
git config --global core.filemode false &&
git config --global color.ui true &&
[ -d depot_tools ] || git clone https://chromium.googlesource.com/chromium/tools/depot_tools &&
PATH="$PATH:$CHROM_DIR/depot_tools" &&

BUILD_DIR="$CHROM_DIR/buildhost" &&
[ -d "$BUILD_DIR" ] || mkdir -v "$BUILD_DIR" &&
cd "$BUILD_DIR" &&

[ -d src ] || yes | fetch --nohooks --no-history chromium &&
cd src &&
rm -rf out &&

./build/install-build-deps.sh --no-prompt && 
yes | ./build/install-build-deps.sh --arm &&
./build/linux/sysroot_scripts/install-sysroot.py --arch=arm &&

mkdir out
mkdir out/arm

gclient sync && gclient runhooks &&

gn gen out/arm --args='is_official_build=true is_debug=false is_component_build=false symbol_level=0 enable_nacl=false blink_symbol_level=0 use_jumbo_build=true target_cpu="arm"'
gclient runhooks
autoninja -C out/arm chrome

「次へ」をクリックするまでは正常に機能します。

[8519/35281] STAMP obj/chrome/browser/resources/settings/unpak.stamp
[8520/35281] ACTION //third_party/blink/public:scaled_resources_100_percent(//build/toolchain/linux:clang_arm)
[8521/35281] ACTION //third_party/openscreen/src/osp/msgs:cddl_gen(//build/toolchain/linux:clang_arm)
FAILED: gen/third_party/openscreen/src/osp/msgs/osp_messages.h gen/third_party/openscreen/src/osp/msgs/osp_messages.cc 
python ../../third_party/openscreen/src/tools/cddl/cddl.py --header third_party/openscreen/src/osp/msgs/osp_messages.h --cc third_party/openscreen/src/osp/msgs/osp_messages.cc --gen-dir gen --log third_party/openscreen/src/osp/msgs/cddl.log ../../third_party/openscreen/src/osp/msgs/osp_messages.cddl
Traceback (most recent call last):
 File "../../third_party/openscreen/src/tools/cddl/cddl.py", line 116, in <module>
main()
File "../../third_party/openscreen/src/tools/cddl/cddl.py", line 37, in main
False, log, args.verbose)
File "../../third_party/openscreen/src/tools/cddl/cddl.py", line 84, in echoAndRunCommand
process = subprocess.Popen(commandArray, stdout=logfile, stderr=logfile)
File "/usr/lib/python2.7/subprocess.py", line 711, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child
raise child_exception
OSError: [Errno 8] Exec format error
[8522/35281] ACTION //third_party/blink/public:scaled_resources_200_percent(//build/toolchain/linux:clang_arm)
[8523/35281] CXX obj/third_party/ots/ots/cff.o
[8524/35281] ACTION //chrome/browser/resources/downloads:build(//build/toolchain/linux:clang_arm)
[8525/35281] ACTION //chrome/browser/resources/extensions:build(//build/toolchain/linux:clang_arm)
[8526/35281] ACTION //chrome/browser/resources/print_preview:build(//build/toolchain/linux:clang_arm)
[8527/35281] ACTION //chrome/browser/resources/settings:build(//build/toolchain/linux:clang_arm)
ninja: build stopped: subcommand failed.

私が読んだところによると、これは間違ったアーキテクチャで何かを実行しようとしていることを意味します。

誰かが私に正しい方向を教えてもらえますか?

ベストアンサー1

Googleのオープンスクリーン作成者のおかげで、これは既知の事実です。抜け穴1つの解決策は、ビルド中のChromeバージョンに修正をバックポートするか、78.0.3890.0以降を使用することです。

バックポートしやすいと思いましたが、修正が含まれているコミットにオープンスクリーンのsrc構造への変更も含まれているため、ビルドに失敗しました...最後の2つのコミットを比較して修正を慎重に選択し、その修正を適用しました。 I クロムブランチに変更します。

エラーに記載されている回避策は、gn引数 "enable_opencreen = false"を使用してopenscreenを無効にすることです。

おすすめ記事