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의 오픈스크린 작성자 덕분에 이것은 알려진 사실입니다.허점한 가지 해결책은 빌드 중인 크롬 버전으로 수정 사항을 백포트하거나 78.0.3890.0 이상을 사용하는 것입니다.

백포트하기 쉬울 거라 생각했는데, 수정 사항이 포함된 커밋에 오픈스크린 src 구조에 대한 변경 사항도 포함되어 있어 빌드가 실패했습니다... 마지막 두 커밋을 비교하여 수정 사항을 신중하게 골랐고 해당 수정 사항을 적용했습니다. I 크롬 브랜치로 변경합니다.

오류에 언급된 해결 방법은 gn 인수 "enable_opencreen=false"를 사용하여 openscreen을 비활성화하는 것입니다.

관련 정보