2016-08-01 123 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

感謝您的幫助,但幾天後就成功編譯成功了。 –