铿锵(3.8)和Android NDK r14b
问题描述:
建设提升(1.58)我尝试使用铿锵3.8建立提升1.58的Android NDK r14b。我已经与gcc正确地工作,但叮当的情况并非如此。铿锵(3.8)和Android NDK r14b
通过运行下面的命令(它是program_options LIB只举一个例子):
"androidNDK/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++"
-c
-x c++
-std=c++11
--stdlib=libc++
-mthumb
-Os
-O2
-g
-Wno-unused-local-typedefs
-O3
-Wno-inline
-Wall
--sysroot=androidNDK/platforms/android-24/arch-arm
-I"androidNDK/sources/cxx-stl/llvm-libc++/include"
-D_GLIBCXX__PTHREADS
-D__arm__
-D_REENTRANT
-D__ANDROID__
-DANDROID
-pthread
-std=c++11
--stdlib=libc++
-mthumb
-fno-strict-aliasing
-DBOOST_ALL_NO_LIB=1
-DBOOST_TEST_NO_MAIN
-DNDEBUG
-D_HAS_EXCEPTIONS=0
-D_LITTLE_ENDIAN
-I"."
-o "bin.v2\libs\program_options\build\clang-linux-android\release\link-static\runtime-link-static\target-os-linux\threadapi-pthread\threading-multi\config_file.o" "libs\program_options\src\config_file.cpp"
,但我得到的signal.h中文件中的一些错误:
clang++.exe: warning: argument unused during compilation: '-mthumb'
clang++.exe: warning: argument unused during compilation: '-mthumb'
In file included from libs\program_options\src\config_file.cpp:8:
In file included from .\boost/program_options/config.hpp:10:
In file included from .\boost/config.hpp:57:
In file included from .\boost/config/platform/linux.hpp:74:
In file included from .\boost/config/posix_features.hpp:18:
In file included from androidNDK/platforms/android-24/arch-arm/usr/include\unistd.h:34:
In file included from androidNDK/platforms/android-24/arch-arm/usr/include\sys/select.h:35:
androidNDK/platforms/android-24/arch-arm/usr/include\signal.h:86:18: error: expected ';' at
end of declaration list
sighandler_t sa_handler;
^
androidNDK/platforms/android-24/arch-arm/usr/include\asm/signal.h:101:22: note: expanded
from macro 'sa_handler'
#define sa_handler _u._sa_handler
^
In file included from libs\program_options\src\config_file.cpp:8:
In file included from .\boost/program_options/config.hpp:10:
In file included from .\boost/config.hpp:57:
In file included from .\boost/config/platform/linux.hpp:74:
In file included from .\boost/config/posix_features.hpp:18:
In file included from androidNDK/platforms/android-24/arch-arm/usr/include\unistd.h:34:
In file included from androidNDK/platforms/android-24/arch-arm/usr/include\sys/select.h:35:
androidNDK/platforms/android-24/arch-arm/usr/include\signal.h:87:12: error: expected ')'
void (*sa_sigaction)(int, struct siginfo*, void*);
^
androidNDK/platforms/android-24/arch-arm/usr/include\asm/signal.h:102:24: note: expanded
from macro 'sa_sigaction'
#define sa_sigaction _u._sa_sigaction
^
androidNDK/platforms/android-24/arch-arm/usr/include\signal.h:87:10: note: to match this
'('
void (*sa_sigaction)(int, struct siginfo*, void*);
^
androidNDK/platforms/android-24/arch-arm/usr/include\signal.h:87:12: error: duplicate
member '_u'
void (*sa_sigaction)(int, struct siginfo*, void*);
^
androidNDK/platforms/android-24/arch-arm/usr/include\asm/signal.h:102:22: note: expanded
from macro 'sa_sigaction'
#define sa_sigaction _u._sa_sigaction
^
androidNDK/platforms/android-24/arch-arm/usr/include\signal.h:86:18: note: previous
declaration is here
sighandler_t sa_handler;
^
androidNDK/platforms/android-24/arch-arm/usr/include\asm/signal.h:101:20: note: expanded
from macro 'sa_handler'
#define sa_handler _u._sa_handler
^
3 errors generated.
是否有任何人谁已经做了这样的事情,或者可能会看到错误的东西?
答
所以它终于为我工作。 我意识到signal.h上的那些错误是因为我的编译器的目标没有真正定义。我想建立升压的臂32位,但在“执行配置检查”,它是: - 32位:无 - 64位:是 - 手臂:是
于是,我改变了我的用户配置在的.jam我升压文件夹:
import os ;
androidNDKRoot = E:/androidNDK ; # put the relevant path
using clang : android :
$(androidNDKRoot)/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++ :
<compileflags>--sysroot=$(androidNDKRoot)/platforms/android-21/arch-arm
<compileflags>-I$(androidNDKRoot)/sources/cxx-stl/llvm-libc++/include
<compileflags>-I$(androidNDKRoot)/sources/cxx-stl/llvm-libc++abi/include
<compileflags>-I$(androidNDKRoot)/sources/android/support/include
<compileflags>-g
<compileflags>-Os
<compileflags>-O2
<compileflags>--target=armv7a-none-linux-androideabi
;
看来,铛没有像在海湾合作委员会的选项,所以我加在PATH变量他们共同的绝对路径:
set PATH=%PATH%;E:\androidNDK\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\arm-linux-androideabi\bin\
,并测试一个构建(例如:原子),我执行从我的助推文件夹:
b2.exe --user-config=tools\build\src\build\user-config.jam target-os=android toolset=clang-android link=static runtime-link=static variant=debug threading=multi -q -a -j6 --with-atomic
看起来像它可能是一个错误。你可以用repro指令提交一份吗? https://github.com/android-ndk/ndk/issues –