gpt4 book ai didi

android - 为 android mips 编译 libcurl

转载 作者:行者123 更新时间:2023-11-30 02:40:26 34 4
gpt4 key购买 nike

我创建了一个脚本,可以为 3 个平台(更像是 4 个)编译 android 的 curl: 1. armv5 2. armv7 3. x86 4.mips

我在 SO 中使用这篇文章来做到这一点:enter link description here对于 arm 和 x86,一切正常(我使用 ndk 工具链和 openssl 特定库,我事先为这些相同的平台编译)。唯一有问题的平台是 mips。我确实得到了 libcrul.a、la 和 .so 但是在尝试编译可执行文件 curl 时链接失败:

libtool: link: mipsel-linux-android-gcc -O2 -Wno-system-headers -o .libs/curl curl-tool_binmode.o curl-tool_bname.o curl-tool_cb_dbg.o curl-tool_cb_hdr.o curl-tool_cb_prg.o curl-tool_cb_rea.o curl-tool_cb_see.o curl-tool_cb_wrt.o curl-tool_cfgable.o curl-tool_convert.o curl-tool_dirhie.o curl-tool_doswin.o curl-tool_easysrc.o curl-tool_formparse.o curl-tool_getparam.o curl-tool_getpass.o curl-tool_help.o curl-tool_helpers.o curl-tool_homedir.o curl-tool_hugehelp.o curl-tool_libinfo.o curl-tool_main.o curl-tool_metalink.o curl-tool_mfiles.o curl-tool_msgs.o curl-tool_operate.o curl-tool_operhlp.o curl-tool_panykey.o curl-tool_paramhlp.o curl-tool_parsecfg.o curl-tool_setopt.o curl-tool_sleep.o curl-tool_urlglob.o curl-tool_util.o curl-tool_vms.o curl-tool_writeenv.o curl-tool_writeout.o curl-tool_xattr.o ../lib/curl-strtoofft.o ../lib/curl-strdup.o ../lib/curl-rawstr.o ../lib/curl-nonblock.o ../lib/curl-warnless.o  -L/usr/local/android-ndk/platforms/android-9/arch-mips/usr/lib -L/home/eyal/devel/openssl/lib ../lib/.libs/libcurl.so -lz
/usr/local/ndk-toolchains/mipsel-linux-android-4.6/bin/../lib/gcc/mipsel-linux-android/4.6/../../../../mipsel-linux-android/bin/ld: warning: libssl.so.1.1.0, needed by ../lib/.libs/libcurl.so, not found (try using -rpath or -rpath-link)
/usr/local/ndk-toolchains/mipsel-linux-android-4.6/bin/../lib/gcc/mipsel-linux-android/4.6/../../../../mipsel-linux-android/bin/ld: warning: libcrypto.so.1.1.0, needed by ../lib/.libs/libcurl.so, not found (try using -rpath or -rpath-link)
../lib/.libs/libcurl.so: undefined reference to `RAND_load_file'
../lib/.libs/libcurl.so: undefined reference to `SSL_CTX_use_certificate'
../lib/.libs/libcurl.so: undefined reference to `X509_load_crl_file'
../lib/.libs/libcurl.so: undefined reference to `SSL_set_fd'
../lib/.libs/libcurl.so: undefined reference to `SSL_set_connect_state'
../lib/.libs/libcurl.so: undefined reference to `SSL_CTX_free'
../lib/.libs/libcurl.so: undefined reference to `X509_free'

还有更多“ undefined reference ”错误,我饶了你...该库存在,-L 路径没问题,我检查过,权限似乎没问题,而且它适用于 arm 和 x86 for android。我正在使用 --host=mipsel-linux-android 这可能是错误的,但似乎是正确的,构建了 .so 和 .a 所以一切顺利,但 ld 对于某些人reason 在尝试创建和执行时,一旦请求就无法找到 ssl 和 crypt。

有人知道吗?当尝试手动使用工具链使用 libssl 编译文件时,我成功了!

10 倍。

最佳答案

../lib/.libs/libcurl.so: undefined reference to `RAND_load_file'

这些是 OpenSSL 函数。你有为 MIPS 交叉编译的 OpenSSL 吗?如果可以,是否可用?


libtool: link: mipsel-linux-android-gcc -O2 -Wno-system-headers -o .libs/curl curl-tool_binmode.o 
curl-tool_bname.o curl-tool_cb_dbg.o curl-tool_cb_hdr.o curl-tool_cb_prg.o curl-tool_cb_rea.o
curl-tool_cb_see.o curl-tool_cb_wrt.o curl-tool_cfgable.o curl-tool_convert.o curl-tool_dirhie.o
curl-tool_doswin.o curl-tool_easysrc.o curl-tool_formparse.o curl-tool_getparam.o
curl-tool_getpass.o curl-tool_help.o curl-tool_helpers.o curl-tool_homedir.o curl-tool_hugehelp.o
curl-tool_libinfo.o curl-tool_main.o curl-tool_metalink.o curl-tool_mfiles.o curl-tool_msgs.o
curl-tool_operate.o curl-tool_operhlp.o curl-tool_panykey.o curl-tool_paramhlp.o
curl-tool_parsecfg.o curl-tool_setopt.o curl-tool_sleep.o curl-tool_urlglob.o curl-tool_util.o
curl-tool_vms.o curl-tool_writeenv.o curl-tool_writeout.o curl-tool_xattr.o ../lib/curl-strtoofft.o
../lib/curl-strdup.o ../lib/curl-rawstr.o ../lib/curl-nonblock.o ../lib/curl-warnless.o
-L/usr/local/android-ndk/platforms/android-9/arch-mips/usr/lib -L/home/eyal/devel/openssl/lib
../lib/.libs/libcurl.so -lz

好的...看起来您指定了libcryptolibssl 的路径:

-L/home/eyal/devel/openssl/lib

但看起来您并没有传入实际的库:

-lssl -lcrypto

I'm using --host=mipsel-linux-android which might be wrong...

我觉得还可以。这是 Autotools 列表中的人员 told me to use for Android/ARM :

./configure --build=`./config.guess` --host=arm-linux-androideabi

我预计 MIPS 会使用这样的东西,因为 Autotools 人员传递的东西:

./configure --build=`./config.guess` --host=mipsel-linux-android

但我还是觉得你的还行。

关于android - 为 android mips 编译 libcurl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25835156/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com