Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用conan编译适用于Android的OpenSSL_Android_Android Ndk_Openssl_Conan - Fatal编程技术网

使用conan编译适用于Android的OpenSSL

使用conan编译适用于Android的OpenSSL,android,android-ndk,openssl,conan,Android,Android Ndk,Openssl,Conan,我正在尝试为Android编译OpenSSL。我可以使用以下命令之一手动成功编译它: ./Configure android no-asm threads no-rc5 no-idea no-ssl2 no-tests no-shared -fPIC && make depend && make && make install ./config no-asm threads no-rc5 no-idea no-ssl2 no-tests no-sh

我正在尝试为Android编译OpenSSL。我可以使用以下命令之一手动成功编译它:

./Configure android no-asm threads no-rc5 no-idea no-ssl2 no-tests no-shared -fPIC && make depend && make && make install
./config no-asm threads no-rc5 no-idea no-ssl2 no-tests no-shared -fPIC && make depend && make && make install
设置这些环境变量后:

_ANDROID_API="android-24"
_ANDROID_ARCH=arch-arm
_ANDROID_EABI="arm-linux-androideabi-4.8"
_ANDROID_NDK="android-ndk-r16b"
MACHINE=armv7
RELEASE=2.6.37
SYSTEM=android
ARCH=arm
CROSS_COMPILE="arm-linux-androideabi-"
ANDROID_TOOLCHAIN="/tmp/arm_24_c++11_toolchain/bin/"
ANDROID_TOOLS="arm-linux-androideabi-gcc arm-linux-androideabi-ranlib arm-linux-androideabi-ld"
ANDROID_SYSROOT="/tmp/arm_24_c++11_toolchain/sysroot"
NDK_SYSROOT="/tmp/arm_24_c++11_toolchain/sysroot"
ANDROID_NDK_SYSROOT="/tmp/arm_24_c++11_toolchain/sysroot"
ANDROID_API="android-24"
ANDROID_DEV="/tmp/arm_24_c++11_toolchain/sysroot/usr"
HOSTCC=gcc
NDK=/home/semko/Downloads/android-ndk-r9d
CC=/tmp/arm_24_c++11_toolchain/android-toolchain-arm/bin/arm-linux-androidabi-gcc
CXX=/tmp/arm_24_c++11_toolchain/android-toolchain-arm/bin/arm-linux-androideabi-g++
LINK=/tmp/arm_24_c++11_toolchain/android-toolchain-arm/bin/arm-linux-androideabi-g++
LD=/tmp/arm_24_c++11_toolchain/android-toolchain-arm/bin/arm-linux-androideabi-ld
AR=/tmp/arm_24_c++11_toolchain/android-toolchain-arm/bin/arm-linux-androideabi-ar
RANLIB=/tmp/arm_24_c++11_toolchain/android-toolchain-arm/bin/arm-linux-androideabi-ranlib
STRIP=/tmp/arm_24_c++11_toolchain/android-toolchain-arm/bin/arm-linux-androideabi-strip
CPPFLAGS=" -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 "
CXXFLAGS=" -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 -frtti -fexceptions "
CFLAGS=" -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 "
LDFLAGS=" -march=armv7-a -Wl,--fix-cortex-a8 "
但当我尝试对柯南做同样的操作时,make dependen命令失败了。 My conanfile.py可以选择为linux(works)和android构建:

def _build_linux(self, args):
    args.append("-fPIC")
    configure_type = "linux-elf " if self.settings.arch == "x86" else "linux-x86_64"
    command = "./Configure {} {}".format(configure_type, " ".join(args))
    self.output.warn(command)
    self._run_in_src(command)
    tools.replace_in_file(
        os.path.join(self.subfolder, "Makefile"),
        "install: all install_docs install_sw",
        "install: all install_sw"
    )
    self._run_in_src("make depend")
    self._run_in_src("make")
    self._run_in_src("make install")

def _build_android(self, args):
    args.append("-fPIC")
    command = "./Configure {} no-asm {}".format("android", " ".join(args))
    self.output.warn(command)
    self._run_in_src(command)
    tools.replace_in_file(
        os.path.join(self.subfolder, "Makefile"),
        "install: all install_docs install_sw",
        "install: all install_sw"
    )
    self._run_in_src("make depend")
    self._run_in_src("make")
    self._run_in_src("make install")
我得到了这个错误:

Configured for android.

*** Because of configuration changes, you MUST do the following before
*** building:

    make depend
making depend in crypto...
make[1]: Entering directory `/home/semko/.conan/data/OpenSSL/1.0.2g-5/stable/build/af2/openssl-1.0.2g/crypto'
../util/domd: 31: ../util/domd: makedepend: not found
mv: cannot stat 'Makefile.new': No such file or directory
make[1]: *** [local_depend] Error 127
make[1]: Leaving directory `/home/semko/.conan/data/OpenSSL/1.0.2g-5/stable/build/af2/openssl-1.0.2g/crypto'
make: *** [depend] Error 1
OpenSSL/1.0.2g-5@galaxy-sdk/stable: 
OpenSSL/1.0.2g-5@galaxy-sdk/stable: ERROR: Package 'af2' build failed
OpenSSL/1.0.2g-5@galaxy-sdk/stable: WARN: Build folder /home/semko/.conan/data/OpenSSL/1.0.2g-5/stable/build/af2
ERROR: OpenSSL/1.0.2g-5@private/stable: Error in build() method, line 88
    self._build_android(args)
while calling '_build_android', line 200
    self._run_in_src(command)
while calling '_run_in_src', line 318
    self.run(command)
    ConanException: Error 512 while executing cd openssl-1.0.2g && ./Configure android no-asm threads no-rc5 no-idea no-ssl2 no-tests --prefix=/home/semko/.conan/data/OpenSSL/1.0.2g-5/stable/package/af2 --with-zlib-include="/home/semko/.conan/data/ZLib/1.2.8-7//stable/package/d86/include" --with-zlib-lib="/home/semko/.conan/data/ZLib/1.2.8-7/stable/package/d86/lib" no-shared zlib no-zlib-dynamic -fPIC && make depend && make && make install

有趣的是,当我复制失败的命令时,它就工作了。你们知道我如何编译它吗?

嗨!我认为这应该提交一个问题。一些可能有用的问题和信息:您如何通过配置文件将环境变量传递给柯南?
self.\u在\u src(命令)
中运行什么?您使用的是柯南中心现有的OpenSSL方法还是您自己的方法?你试过柯南中心现在的那个吗?您是否有一个包含要复制的完整代码的存储库?看来这可能是路径和文件夹的问题。谢谢你的评论。我将提交该问题。