【发布时间】:2014-07-30 14:19:23
【问题描述】:
我一直在碰壁:我已经让 openssl 编译得很好,适用于 android armeabi 架构,但对 x86 的帮助要少得多,而且我在 openSSL 上找不到任何东西网站。
我最终发现了一篇关于将 openssl 用于 x86 架构的英特尔文章 (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: 在函数 ts_main:ts.c(.text+0x1e8a) 中:错误:未定义对 '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:在函数 ts_main:ts.c(.text+0x1ea2) 中:错误:未定义对 'TS_TST_INFO_free' 的引用 /private/tmp/my-android-toolchain/bin/../lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld: srp.o:在函数 srp_verify_user:srp.c(.text+0xb3) 中:错误:未定义对“SRP_create_verifier”的引用 /private/tmp/my-android-toolchain/bin/../lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld: srp.o:在函数 srp_create_user:srp.c(.text+0x1e3) 中:错误:未定义对“SRP_create_verifier”的引用 /private/tmp/my-android-toolchain/bin/../lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld: srp.o:在函数 srp_main:srp.c(.text+0x1014) 中:错误:未定义对“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:在函数 srp_main:srp.c(.text+0x10c0) 中:错误:未定义对“SRP_get_default_gN”的引用 /private/tmp/my-android-toolchain/bin/../lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld: srp.o:在函数 srp_main:srp.c(.text+0x16dd) 中:错误:未定义对“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 gcc openssl makefile cross-compiling