2016-08-01 53 views
0

我想建立铬代码Android和被陷在与 ninja -C opt/Full chrome_public_apk命令编译elfutils和我得到这个作为例外编译铿锵嵌套函数在Chromuim(安卓)elf_utils

[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.

我我不熟悉工作和配置ninja构建系统。 但我已阅读约Clang,它不会编译嵌套功能和G++可以做到这一点。 但我不知道如何设置忍者运行G ++来编译所有嵌套的函数C代码。

任何人有任何建议吗?

回答

1

您无法使用clang编译带嵌套函数的代码。从铛文档(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.

要使用G ++与忍者,你可以更改环境变量CC和CXX,像这样的(基于UNIX的操作系统暗示):

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

或更改clang到如果ninja不使用这些变量,则在.ninja文件中输入g++

+0

感谢您的帮助,但几天后就成功编译成功了。 –