J'ai un problème lors de la construction de chrome pour plate-forme ARM. Voici quelques détails sur mon serveur hôte:Chromium version 53 pour ARM gn build issue
version Linux 4.2.0-42 générique (buildd @ lgw01-55) (version gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1 ~ 14.04.3))
Et j'utilise Chromium version 53.0.2785.143. J'ai essayé d'utiliser gn pour construire le chrome, et voici mes arguments dans le fichier args.gn:
target_cpu = "arm"
arm_tune = "generic-armv7-a"
arm_float_abi = "softfp"
Fondamentalement, j'ai utilisé ces arguments spécifiques ci-dessus à cause de ma plate-forme ARM. Et la commande gn a couru sans erreurs. Cependant, lors de la construction projet avec ninja, les erreurs suivantes sauté hors:
ninja: Entering directory `out/Default_arm64' [1/1] Regenerating ninja files [296/46119] LINK ./minidump-2-core FAILED: minidump-2-core ../../third_party/llvm-build/Release+Asserts/bin/clang++ -Wl,--fatal-warnings -fPIC -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -fuse-ld=gold -B../../third_party/binutils/Linux_x64/Release/bin -Wl,--icf=all -pthread --target=arm-linux-gnueabihf --sysroot=../../build/linux/debian_wheezy_arm-sysroot -L/home/miaozixiong/workspace/chromium/src/build/linux/debian_wheezy_arm-sysroot/lib/arm-linux-gnueabihf -Wl,-rpath-link=/home/miaozixiong/workspace/chromium/src/build/linux/debian_wheezy_arm-sysroot/lib/arm-linux-gnueabihf -L/home/miaozixiong/workspace/chromium/src/build/linux/debian_wheezy_arm-sysroot/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link=/home/miaozixiong/workspace/chromium/src/build/linux/debian_wheezy_arm-sysroot/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link=../Default_arm64 -Wl,--disable-new-dtags -o "./minidump-2-core" -Wl,--start-group @"./minidump-2-core.rsp" -Wl,--end-group -ldl -lrt ld.gold: error: obj/breakpad/minidump-2-core/minidump-2-core.o uses VFP register arguments, output does not
...
Je suis nouveau au chrome et ne pas avoir la moindre idée de ce que font ces erreurs signifient. Donc, n'importe qui sait comment contourner? Tu es apprécié.
Note: J'ai besoin que mon attribut arm_float_abi soit "softfp" selon ma plateforme ARM. Donc s'il vous plaît noter que je ne peux pas le changer en "dur". De plus, quand float abi = "hard", il n'y a pas d'erreur de construction.
Bonjour @valiano. Merci pour votre réponse. J'ai essayé arm_float_abi = "soft" option et a obtenu la même erreur. Aussi, j'ai lu le tutoriel que vous avez mentionné auparavant. Malheureusement, je suppose que ce tutoriel est principalement axé sur la manière «dure» du flotteur. Je suis tout à fait nouveau à linux arm cross toolchains, et si j'avais tort, corrigez-moi s'il vous plaît. – tonymiao
@tonymiao Je vois ... En termes de chaîne d'outils, vous voulez probablement installer: 'sudo apt-get installer gcc-bras-linux-gnueabi g ++ - 4.7-multilib-bras-linux-gnueabi', et pour supprimer le Les homologues HF 'gcc-arm-linux-gnueabihf' et' g ++ - 4.8-multilib-bras-linux-gnueabihf' dans le cas où ils ont été précédemment installés par le tutoriel mentionné. – valiano
Merci frère, @ valiano. J'ai essayé comme tu l'as mentionné dans le commentaire. Je ne peux toujours pas le faire. Je suppose que google a changé le compilateur de bras en 2015. J'ai tracé un patch ici https://bugs.chromium.org/p/chromium/issues/list qui changeait gnueabi en gnueabihf. Il y avait trop de changements pertinents que je ne pouvais pas tous les trouver. – tonymiao