2016-08-01 33 views
0

Ich versuche, Chrom-Code für Android zu bauen und bei der Zusammenstellung elfutils mit ninja -C opt/Full chrome_public_apk Befehl stecken zu bleiben, und ich bin diesesUm verschachtelte Funktionen mit Clang für elf_utils in Chromuim (Android) zu kompilieren

[30/21982] CC clang_x64/obj/third_party/elfutils/libelf/elf32_updatefile.o

FAILED: clang_x64/obj/third_party/elfutils/libelf/elf32_updatefile.o

../../third_party/llvm-build/Release+Asserts/bin/clang -MMD -MF clang_x64/obj/third_party/elfutils/libelf/elf32_updatefile.o.d -D_GNU_SOURCE -DHAVE_CONFIG_H -DV8_DEPRECATION_WARNINGS -DENABLE_MDNS=1 -DENABLE_NOTIFICATIONS -DENABLE_PEPPER_CDMS -DENABLE_PLUGINS=1 -DENABLE_PDF=1 -DENABLE_PRINTING=1 -DENABLE_BASIC_PRINTING=1 -DENABLE_PRINT_PREVIEW=1 -DENABLE_SPELLCHECK=1 -DUSE_UDEV -DUI_COMPOSITOR_IMAGE_TRANSPORT -DUSE_AURA=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_CLIPBOARD_AURAX11=1 -DUSE_DEFAULT_RENDER_THEME=1 -DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -DUSE_X11=1 -DENABLE_WEBRTC=1 -DENABLE_EXTENSIONS=1 -DENABLE_TASK_MANAGER=1 -DENABLE_THEMES=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DENABLE_SESSION_SERVICE=1 -DENABLE_SUPERVISED_USERS=1 -DENABLE_SERVICE_DISCOVERY=1 -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DCHROMIUM_BUILD -DENABLE_MEDIA_ROUTER=1 -DFIELDTRIAL_TESTING_ENABLED -DCR_CLANG_REVISION=274369-1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_DEBUG -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -D_GLIBCXX_DEBUG=1 -I../../third_party/elfutils -I../../third_party/elfutils/src/lib -I../.. -Iclang_x64/gen -I../../third_party/elfutils/src/libelf -std=gnu99 -Wall -Wshadow -Werror -Wunused -Wextra -Wformat=2 -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -funwind-tables -fPIC -pipe -B../../third_party/binutils/Linux_x64/Release/bin -fcolor-diagnostics -fdebug-prefix-map=/home/vcareall/Yogesh/CompanyCode/chromium/src=. -pthread -m64 -march=x86-64 -O0 -g2 -gsplit-dwarf --sysroot=../../build/linux/debian_wheezy_amd64-sysroot -fvisibility=hidden -Xclang -load -Xclang ../../third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.so -Xclang -add-plugin -Xclang find-bad-constructs -Xclang -plugin-arg-find-bad-constructs -Xclang check-templates -Xclang -plugin-arg-find-bad-constructs -Xclang follow-macro-expansion -Xclang -plugin-arg-find-bad-constructs -Xclang check-implicit-copy-ctors -Xclang -plugin-arg-find-bad-constructs -Xclang check-ipc -Wheader-hygiene -Wstring-conversion -Werror -Wall -Wno-unused-variable -Wno-missing-field-initializers -Wno-unused-parameter -Wno-c++11-narrowing -Wno-covered-switch-default -Wno-deprecated-register -Wno-unneeded-internal-declaration -Wno-inconsistent-missing-override -Wno-shift-negative-value -Wno-undefined-var-template -Wno-nonportable-include-path -c ../../third_party/elfutils/src/libelf/elf32_updatefile.c -o clang_x64/obj/third_party/elfutils/libelf/elf32_updatefile.o

../../third_party/elfutils/src/libelf/elf32_updatefile.c:297:4: error: function definition is not allowed here

{

^

../../third_party/elfutils/src/libelf/elf32_updatefile.c:331:7: error: implicit declaration of function 'fill_mmap' is invalid in C99 [-Werror,-Wimplicit-function-declaration] fill_mmap (dl->data.d.d_off);

^

2 errors generated.

[35/21982] CXX clang_x64/obj/third_party/android_protobuf/android_protoc/javamicro_file.o ninja: build stopped: subcommand failed.

ich als Ausnahme bekommen Ich bin nicht mit dem Arbeiten und Konfigurieren des ninja Build-Systems vertraut. Aber ich habe über Clang gelesen, dass es die verschachtelten Funktionen nicht kompiliert und G++ das tun kann. Aber ich weiß nicht, wie man Ninja für das Ausführen von G ++ setzt, um alle verschachtelten Funktion C-Code zu kompilieren.

Hat jemand einen Vorschlag dafür?

Antwort

1

Sie können Code mit verschachtelten Funktionen mit Clang nicht kompilieren. Von Klirren docs (https://clang.llvm.org/docs/UsersManual.html#gcc-extensions-not-implemented-yet):

clang does not support nested functions; this is a complex feature which is infrequently used, so it is unlikely to be implemented anytime soon.

verwenden g ++ mit Ninja Sie können entweder Umgebungsvariablen ändern CC und CXX, wie diese (Unix-basierten Betriebssystem impliziert):

$ export CC=/path/to/gcc 
$ export CXX=/path/to/g++ 

oder clang ändern g++ in .ninja-Datei, wenn Ninja diese Variablen nicht verwendet.

+0

danke für die Hilfe, aber kompiliert erfolgreich nach ein paar Tagen des Durcheinander. –