首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于Android x86_64和mips64的Openssl

用于Android x86_64和mips64的Openssl
EN

Stack Overflow用户
提问于 2014-11-06 12:29:14
回答 3查看 4.5K关注 0票数 0

我已经为android-21 (Android)架构的5/7构建了openssl : armeabi、armeabi-v7a、arm64、mips、x86。但是,我无法为x86_64和mips64构建它。

我在做什么..。

x86 -工作

下面是我的x86工作脚本,使用make-独立工具链创建的工具链:

代码语言:javascript
复制
export ANDROID_NDK_ROOT=/Users/jacsteve/dev/android/ndk
export ANDROID_API=android-21
export ANDROID_ARCH=arch-x86
export ANDROID_EABI=i686-linux-android-4.9
export ANDROID_SYSROOT=$ANDROID_NDK_ROOT/platforms/$ANDROID_API/arch-x86
export ANDROID_TOOLCHAIN=/tmp/toolchain/x86
export ANDROID_DEV=$ANDROID_SYSROOT/usr

export SYSTEM=android
export ARCH=x86

export CROSS_COMPILE=i686-linux-android-

export CFLAGS="--sysroot=$ANDROID_SYSROOT"
export CPPFLAGS="--sysroot=$ANDROID_SYSROOT"
export CXXFLAGS="--sysroot=$ANDROID_SYSROOT"

./Configure android-x86 shared no-asm -no-ssl2 -no-ssl3 -no-comp -no-hw --cross-compile-prefix=$CROSS_COMPILE --openssldir=/tmp/ssl/x86

make depend
make
make install

这很好,让我使用libssl.solibcrypto.so/tmp/ssl/x86中。

x86_64 -失败

然而,x86_64失败了。下面是剧本:

代码语言:javascript
复制
export ANDROID_NDK_ROOT=/Users/jacsteve/dev/android/ndk
export ANDROID_API=android-21
export ANDROID_ARCH=arch-x86_64
export ANDROID_EABI=x86_64-linux-android-4.9
export ANDROID_SYSROOT=$ANDROID_NDK_ROOT/platforms/$ANDROID_API/arch-x86_64
export ANDROID_TOOLCHAIN=/tmp/toolchain/x86_64
export ANDROID_DEV=$ANDROID_SYSROOT/usr

export SYSTEM=android
export ARCH=x86_64

export CROSS_COMPILE=x86_64-linux-android-

export CFLAGS="--sysroot=$ANDROID_SYSROOT"
export CPPFLAGS="--sysroot=$ANDROID_SYSROOT"
export CXXFLAGS="--sysroot=$ANDROID_SYSROOT"

./Configure android-x86 shared no-asm -m64 -no-ssl2 -no-ssl3 -no-comp -no-hw --cross-compile-prefix=$CROSS_COMPILE --openssldir=/tmp/ssl/x86_64

make depend
make
make install

这些错误..。

x86_64

我从make调用中获得了大量的错误消息,如下所示:

代码语言:javascript
复制
/private/tmp/toolchain/x86_64/bin/../lib/gcc/x86_64-linux-android/4.9/../../../../x86_64-linux-android/bin/ld:
error: libcrypto.a(cryptlib.o): incompatible target
/private/tmp/toolchain/x86_64/bin/../lib/gcc/x86_64-linux-android/4.9/../../../../x86_64-linux-android/bin/ld:
error: libcrypto.a(mem.o): incompatible target
...
collect2: error: ld returned 1 exit status

在我看来,x86_64-linux-android-gcc编译一切都很好,但是当我们进入链接阶段时,x86_64-linux-android-ld无法读取编译后的对象文件。

mips64

使用类似的mips64设置(使用./Configure android-mips ...),我得到以下错误,这与mips64-linux-android-ld无法读取对象文件类似:

代码语言:javascript
复制
/Users/jacsteve/dev/android/ndk/platforms/android-21/arch-mips64/usr/lib/libdl.so: error adding symbols: File in wrong format
collect2: error: ld returned 1 exit status

有人知道如何成功地构建x86_64和mips64体系结构吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-06 17:28:32

解决了!

而不是

代码语言:javascript
复制
./Configure android-x86 ...

我用过

代码语言:javascript
复制
./Configure linux-generic64 ...

我还在32位架构中使用了linux-generic32

票数 3
EN

Stack Overflow用户

发布于 2015-09-16 14:07:08

之前运行make clean。/Configure为我解决了这个问题。

票数 1
EN

Stack Overflow用户

发布于 2016-09-29 09:24:37

我想,为mips64构建openssl错误的原因是对象和库之间的ABI格式不兼容,格式对象是mips - ELF32 64,而ANDROID_NDK提供的库是mips ELF32。

代码语言:javascript
复制
cd ${ANDROID_NDK_HOME}/platforms/android-24/arch-mips64/usr/lib
readelf -h libc.so
  ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              DYN (Shared object file)
  Machine:                           MIPS R3000
  Version:                           0x1
  Entry point address:               0xa7d0
  Start of program headers:          52 (bytes into file)
  Start of section headers:          204792 (bytes into file)
  Flags:                             0x50001007, noreorder, pic, cpic, o32, mips32
  Size of this header:               52 (bytes)
  Size of program headers:           32 (bytes)
  Number of program headers:         6
  Size of section headers:           40 (bytes)
  Number of section headers:         18
  Section header string table index: 15
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26779531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档