.
/build-openssl4android.sh android # for armeabi
./build-openssl4android.sh android-armeabi #for armeabi-v7a
./build-openssl4android.sh android64-aarch64 #for arm64_v8a
./build-openssl4android.sh android-x86 #for x86
./build-openssl4android.sh android64 #for x86_64
./build-openssl4android.sh mips #for mips
./build-openssl4android.sh mips64 #for mips64
.
/configure $arch \
--prefix=$
/$ \
--with-zlib-include=$sysroot/usr/include \
--with-zlib-lib=$sysroot/usr/lib \
zlib \
no-asm \
no-shared \
no-unit-test
3 錯誤解決
錯誤一:
lib/armeabi-v7a/libcrypto.a(ui_openssl.o):ui_openssl.c:function read_string_inner: error: undefined reference to 『signal』關於lib/armeabi-v7a/libcrypto.a(ui_openssl.o):ui_openssl.c:function read_string_inner: error: undefined reference to 『tcsetattr』
lib/armeabi-v7a/libcrypto.a(ui_openssl.o):ui_openssl.c:function read_string_inner: error: undefined reference to 『tcsetattr』
lib/armeabi-v7a/libcrypto.a(ui_openssl.o):ui_openssl.c:function open_console: error: undefined reference to 『tcgetattr』
這個問題的討論在這裡
開啟 ndk 路徑中 ndk-bundle/build/tools/make-standalone-toolchain.sh,找到
run python `dirname $0`/make_standalone_toolchain.py \
--arch $arch $platform_arg --stl $stl $install_arg $force_arg
在結尾加上一句 –deprecated-headers
run python如果無效:在cflags中新增:-d__android_api__=19dirname $0
/make_standalone_toolchain.py–arch $arch $platform_arg --stl $stl $install_arg $force_arg --deprecated-headers
如果還不行:
export android_ndk_home=
/opt/android-ndk
"$android_ndk_home/build/tools/make_standalone_toolchain.py"
--arch $arch --api $api --install-dir "$toolchain_dir"
--force
$api and $arch are 14 for arm, 21 for arm64, 21 for x86_64 and 14 for x86.
錯誤二:
cxx-stl/llvm-libc /include/stdexcept:136: error: undefined reference to 'std::logic_error::logic_error(char const*)'
在build.gradle的cmake中的引數新增:arguments 「-dandroid_stl=c++_static」
externalnativebuild
} ndk
靜態聯編與動態聯編
在c 中,多型性主要是通過函式過載實現的。過載函式是指程式中對同名函式進行呼叫時,編譯器會根據函式引數的型別和個數,決定該呼叫哪一段函式 來處理這個函式呼叫。這種把函式呼叫與適當的函式 相對應的動作,叫做聯編。聯編分為靜態聯編和動態聯編。在編譯階段決定執行哪個同名的被呼叫函式,稱為靜態聯編。在編譯階...
靜態聯編和動態聯編
聯編是指乙個電腦程式自身彼此關聯 使乙個 源程式經過編譯 連線,成為乙個可執行程式 的過程,在這個聯編過程中,需要確定程式中的操作呼叫 函式呼叫 與執行該操作 函式 的 段之間的對映關係,按照聯編所進行的階段不同,可分為靜態聯編和動態聯編。靜態聯編 呼叫函式和被調函式在程式編譯時,他們在記憶體中的位...
靜態聯編和動態聯編
聯編就是將模組或者函式合併在一起生成可執行 的處理過程,同時對每個模組或者函式呼叫分配記憶體位址,並且對外部訪問也分配正確的記憶體位址,它是電腦程式彼此關聯的過程。按照聯編所進行的階段不同,可分為兩種不同的聯編方法 靜態聯編和動態聯編。靜態聯編是指在編譯階段就將函式實現和函式呼叫關聯起來,因此靜態聯...