【问题标题】:how to build c-ares library in android (NDK)如何在 android (NDK) 中构建 c-ares 库
【发布时间】:2013-01-04 22:57:24
【问题描述】:

谁能告诉我如何在 android (ndk-build) 中构建 C-ares 库

【问题讨论】:

    标签: android-ndk c-ares


    【解决方案1】:

    下面是如何使用 NDK standalone toolchain 将其构建为 ARMv7 的静态库:

    export NDK=/tmp/android-ndk-r8b
    
    # Create the standalone toolchain
    $NDK/build/tools/make-standalone-toolchain.sh \
    --platform=android-9 \
    --install-dir=/tmp/my-android-toolchain
    
    export PATH=/tmp/my-android-toolchain/bin:$PATH
    export SYSROOT=/tmp/my-android-toolchain/sysroot
    export CC="arm-linux-androideabi-gcc --sysroot $SYSROOT"
    
    # Download the latest release
    curl -O http://c-ares.haxx.se/download/c-ares-1.9.1.tar.gz
    tar xvfz c-ares-1.9.1.tar.gz
    
    # Configure
    cd c-ares-1.9.1 && mkdir build
    ./configure --prefix=$(pwd)/build \
    --host=arm-linux-androideabi \
    --disable-shared \
    CFLAGS="-march=armv7-a"
    
    # Build and install
    make && make install
    

    就是这样。静态库部署在build/lib/libcares.a下。

    如果您针对其他拱门(例如 armeabix86)重复 configure 并使用正确的 -march 值并为每个拱门重新构建库。另外,请随意:

    • 根据您的需求调整目标平台(此处为 Android 2.3,即 API 级别 9),
    • 使用满足您需求的configure 选项(例如,您可能还想构建一个动态库、启用/禁用某些功能等)。

    【讨论】:

    • 我遵循了您网站上关于构建第 3 方库的程序。我编译了gsl 库并且编译成功但是当我运行应用程序时。它给出了can not locate cblas_sdsdot 的运行时错误。当我使用nm 命令检查时,该变量存在于库中。任何建议,真的很抱歉调用这个 3 岁的问题。
    • 我认为这值得一个专门的 StackOverflow 问题,因为您显然不是专注于 c-ares 而是专注于 gsl,对吧?
    • 这里是我的问题的链接。我今天发布之前在这里问。stackoverflow.com/questions/30727709/…
    • 嗨,如果我想为x86构建一个静态库,我应该如何替换-march?当我将其更改为 -march=i686-march=x86 时,我收到错误 error: ahost-ares_getopt.o: incompatible target
    • 知道如何为 arm64 架构执行此操作吗?它似乎不像我希望的那样简单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    相关资源
    最近更新 更多