我正在尝试为Android构建Chromium代码,并被困在编译elfutils
ninja -C opt/Full chrome_public_apk
命令,我将其作为异常
[30/21982] CC
clang_x64 / obj / third_party / elfutils / libelf / elf32_updatefile.o
失败:
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 = DEN_USED-USED-USED-USED-USED-USED -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_ABLED-ABLES_ABLES -ABLES_ABLES -ABLES-DESDES = 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 / el futils / 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-添加插件-Xclang查找坏的构造-Xclang -plugin-arg-发现的不良-constructs -Xclang检查模板-Xclang -plugin-arg-发现的不良-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-卫生-Wstring-conversion -Werror -Wall- Wno的未使用变量-Wno的缺少字段初始化器-Wno的未使用参数-Wno-c ++ 11变窄-Wno覆盖的开关默认值-Wno弃用的寄存器-Wno不需要的内部声明-Wno不一致的丢失覆盖-Wno移位负值-Wno不确定的变量模板-Wno-nonportable-include-path -c ../../third_party/elfutils/src/libelf/elf32_updatefile。 -
clang_x64 / obj / third_party / elfutils / libelf / elf32_updatefile.o
../../third_party/elfutils/src/libelf/elf32_updatefile.c:297:4:错误:此处不允许使用函数定义
{
^
../../third_party/elfutils/src/libelf/elf32_updatefile.c:331:7:错误:函数“ fill_mmap”的隐式声明在C99中无效
[-错误,-隐式函数声明]
fill_mmap(dl-> data.d.d_off);
^
产生2个错误。
[35/21982] CXX
clang_x64 / obj / third_party / android_protobuf / android_protoc / javamicro_file.o
ninja:构建已停止:子命令失败。
我对使用和配置ninja
构建系统不熟悉。
但是我已经读过关于Clang
的信息,它不会编译嵌套函数,而G++
可以做到。
但是我不知道如何设置忍者运行G ++来编译所有嵌套函数C代码。
有人对此有任何建议吗?
最佳答案
您不能使用带有clang的嵌套函数来编译代码。从clang docs(https://clang.llvm.org/docs/UsersManual.html#gcc-extensions-not-implemented-yet):
clang不支持嵌套函数;这是一个复杂的功能
很少使用,因此不太可能实现
很快。
要将g ++与ninja一起使用,您可以更改环境变量CC和CXX,如下所示(隐含基于unix的os):
$ export CC=/path/to/gcc
$ export CXX=/path/to/g++
如果ninja不使用这些变量,请在.ninja文件中将
clang
更改为g++
。关于android - 在Chromuim(Android)中使用Clang为elf_utils编译嵌套函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38697214/