Openssl android編譯靜態庫

2021-10-02 06:24:24 字數 2362 閱讀 2394

.

/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 pythondirname $0/make_standalone_toolchain.py

–arch $arch $platform_arg --stl $stl $install_arg $force_arg --deprecated-headers

如果無效:在cflags中新增:-d__android_api__=19

如果還不行:

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 中,多型性主要是通過函式過載實現的。過載函式是指程式中對同名函式進行呼叫時,編譯器會根據函式引數的型別和個數,決定該呼叫哪一段函式 來處理這個函式呼叫。這種把函式呼叫與適當的函式 相對應的動作,叫做聯編。聯編分為靜態聯編和動態聯編。在編譯階段決定執行哪個同名的被呼叫函式,稱為靜態聯編。在編譯階...

靜態聯編和動態聯編

聯編是指乙個電腦程式自身彼此關聯 使乙個 源程式經過編譯 連線,成為乙個可執行程式 的過程,在這個聯編過程中,需要確定程式中的操作呼叫 函式呼叫 與執行該操作 函式 的 段之間的對映關係,按照聯編所進行的階段不同,可分為靜態聯編和動態聯編。靜態聯編 呼叫函式和被調函式在程式編譯時,他們在記憶體中的位...

靜態聯編和動態聯編

聯編就是將模組或者函式合併在一起生成可執行 的處理過程,同時對每個模組或者函式呼叫分配記憶體位址,並且對外部訪問也分配正確的記憶體位址,它是電腦程式彼此關聯的過程。按照聯編所進行的階段不同,可分為兩種不同的聯編方法 靜態聯編和動態聯編。靜態聯編是指在編譯階段就將函式實現和函式呼叫關聯起來,因此靜態聯...