2017-04-21 148 views
1

建設提升(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. 

是否有任何人誰已經做了這樣的事情,或者可能會看到錯誤的東西?

+0

看起來像它可能是一個錯誤。你可以用repro指令提交一份嗎? https://github.com/android-ndk/ndk/issues –

回答

0

所以它終於爲我工作。 我意識到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