编译x86 android,OpenSSL编译为在Android x86架构上运行

我一直在敲我的头撞墙:我已经开始编译为android armeabi架构很好,但是对x86的帮助太少了,而且我在openSSL的网站上找不到任何内容.

我最终找到的东西是关于在x86架构中使用openssl的一篇英特尔文章(https://software.intel.com/en-us/articles/using-intel-advanced-encryption-standard-new-instructions-on-android#openssl),在创建了一个独立的工具链,并通过他们提供的代码并修复其中的一些后,我正处于make几乎所有的通过编译之前的方式失败与一堆未定义的引用’XXX’语句.我现在无法弄清楚如何通过这个,任何帮助将不胜感激.

如果这最终变得有些微不足道,我很抱歉,我很陌生.

跟踪:

/private/tmp/my-android-toolchain/bin/../lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld: ts.o: in function ts_main:ts.c(.text+0x1e8a): error: undefined reference to ‘TS_RESP_set_tst_info’

/private/tmp/my-android-toolchain/bin/../lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld: ts.o: in function ts_main:ts.c(.text+0x1ea2): error: undefined reference to ‘TS_TST_INFO_free’

/private/tmp/my-android-toolchain/bin/../lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld: srp.o: in function srp_verify_user:srp.c(.text+0xb3): error: undefined reference to ‘SRP_create_verifier’

/private/tmp/my-android-toolchain/bin/../lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld: srp.o: in function srp_create_user:srp.c(.text+0x1e3): error: undefined reference to ‘SRP_create_verifier’

/private/tmp/my-android-toolchain/bin/../lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld: srp.o: in function srp_main:srp.c(.text+0x1014): error: undefined reference to ‘X509_get_default_cert_area’

/private/tmp/my-android-toolchain/bin/../lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld: srp.o: in function srp_main:srp.c(.text+0x10c0): error: undefined reference to ‘SRP_get_default_gN’

/private/tmp/my-android-toolchain/bin/../lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld: srp.o: in function srp_main:srp.c(.text+0x16dd): error: undefined reference to ‘TXT_DB_insert’

编辑:

对不起,由于他们在setenv脚本中指定了eabi,我认为这意味着你只能选择一个ARM eabi,因为其他架构没有用它来指定.我一直在使用openSSL的android指令来编译ARM,但我不知道它也能用于x86.如果是这样,那我就觉得愚蠢.

我将–sysroot选项设置为android独立钥匙串上的sysroot.

这些是我用于x86编译的命令,根据关于该主题的英特尔文章.

export CC="$STANDALONE_TOOCHAIN_PATH/bin/i686-linux-android-gcc -mtune=atom -march=atom --sysroot=$STANDALONE_TOOCHAIN_PATH/sysroot"

export AR=$STANDALONE_TOOCHAIN_PATH/bin/i686-linux-android-ar

export RANLIB=/private/tmp/my-android-toolchain/bin/i686-li

./Configure android-x86 -DOPENSSL_IA32_SSE2 -DAES_ASM -DVPAES_ASM

解决方法:

好像我已经弄明白了.使用我发布的代码(因为文章中的代码在语法上有点不正确,但想法是正确的)并且在创建了自定义的android工具链之后,我能够在全新安装OpenSSL后成功运行make.我的猜测是,为了编译ARM体系结构* .a和* .so文件,我所做的工作可能在我回到x86体系结构时出现了问题.

标签:android,gcc,makefile,openssl,cross-compiling

来源: https://codeday.me/bug/20190612/1225329.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值