3

我正在尝试为 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 depend 命令上失败了。我的 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

有趣的是,当我复制失败的命令时,它会起作用。你们知道我该如何编译它吗?

4

0 回答 0