当前位置: 首页 > wzjs >正文

宣传网站模板珠海招聘网最新招聘信息

宣传网站模板,珠海招聘网最新招聘信息,58同城推广,网站建设页面框架以下是 ​​Android (arm64-v8a) 交叉编译 C/C 项目的完整脚本模板​​,基于 NDK 工具链,支持自定义源文件编译为静态库/动态库/可执行文件: 1. 基础交叉编译脚本 (build_android.sh) bash 复制 #!/bin/bash# Android 交叉编译脚本 (arm64-…

以下是 ​​Android (arm64-v8a) 交叉编译 C/C++ 项目的完整脚本模板​​,基于 NDK 工具链,支持自定义源文件编译为静态库/动态库/可执行文件:


1. 基础交叉编译脚本 (build_android.sh)

 

bash

复制

#!/bin/bash# Android 交叉编译脚本 (arm64-v8a)
# 支持:可执行文件、静态库(.a)、动态库(.so)
# 使用方法:./build_android.sh [all|clean]# 配置区 ================================================
NDK_PATH="/home/wu/android/android-ndk-r27c"  # 修改为你的NDK路径
ANDROID_API=30                                # Android API 级别
TARGET_ARCH="aarch64"                         # arm64-v8a
OUTPUT_DIR="android_${TARGET_ARCH}"           # 输出目录# 编译目标配置
TARGET_TYPE="shared"        # 可选项: exec(可执行文件)|static(静态库)|shared(动态库)
OUTPUT_NAME="native-lib"    # 输出文件名(不含后缀)
SOURCE_FILES=(              # 源文件列表"src/main.cpp""src/utils.c"
)INCLUDE_DIRS=(              # 头文件搜索路径"include""third_party/headers"
)# 编译参数
CFLAGS="-DANDROID -fPIC -fstack-protector-strong -Wall -march=armv8-a"
LDFLAGS="-Wl,--build-id=sha1 -Wl,--no-undefined -Wl,-z,noexecstack"# 工具链配置(通常无需修改)
TOOLCHAIN="${NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64"
SYSROOT="${TOOLCHAIN}/sysroot"
CC="${TOOLCHAIN}/bin/${TARGET_ARCH}-linux-android${ANDROID_API}-clang"
CXX="${TOOLCHAIN}/bin/${TARGET_ARCH}-linux-android${ANDROID_API}-clang++"
AR="${TOOLCHAIN}/bin/llvm-ar"
STRIP="${TOOLCHAIN}/bin/llvm-strip"# 函数区 ================================================
function build() {echo "===== 开始 Android (${TARGET_ARCH}) 编译 ====="mkdir -p ${OUTPUT_DIR}# 拼接编译命令local COMPILE_CMDcase ${TARGET_TYPE} in"exec")COMPILE_CMD="${CXX} --sysroot=${SYSROOT}"OUTPUT="${OUTPUT_DIR}/${OUTPUT_NAME}";;"static")COMPILE_CMD="${AR} rcs"OUTPUT="${OUTPUT_DIR}/lib${OUTPUT_NAME}.a";;"shared")COMPILE_CMD="${CXX} --sysroot=${SYSROOT} -shared"OUTPUT="${OUTPUT_DIR}/lib${OUTPUT_NAME}.so";;*)echo "错误:未知编译类型 ${TARGET_TYPE}"exit 1;;esac# 添加头文件路径local INCLUDE_FLAGSfor dir in "${INCLUDE_DIRS[@]}"; doINCLUDE_FLAGS+=" -I${dir}"done# 执行编译${COMPILE_CMD} \${CFLAGS} \${INCLUDE_FLAGS} \"${SOURCE_FILES[@]}" \${LDFLAGS} \-o "${OUTPUT}"# 剥离调试符号(发布时使用)if [[ -f "${OUTPUT}" ]]; then${STRIP} --strip-all "${OUTPUT}"echo "编译成功:${OUTPUT}"file "${OUTPUT}"elseecho "错误:编译失败!"exit 1fi
}function clean() {rm -rf ${OUTPUT_DIR}echo "已清理输出目录"
}# 主流程 ================================================
case "$1" in"all")build;;"clean")clean;;*)echo "用法: $0 [all|clean]"exit 1;;
esac

2. 关键功能说明

  1. ​三种输出类型支持​​:

    • exec:可执行文件(如命令行工具)
    • static:静态库(.a 文件)
    • shared:动态库(.so,JNI 常用)
  2. ​自动处理​​:

    • 头文件搜索路径 (-I)
    • NDK 工具链选择
    • 调试符号剥离(减小体积)
  3. ​使用方法​​:

     

    bash

    复制

    # 编译项目
    ./build_android.sh all# 清理输出
    ./build_android.sh clean

3. 进阶用法示例

示例1:编译JNI动态库
 

bash

复制

# 修改配置区
TARGET_TYPE="shared"
OUTPUT_NAME="jni-native"  # 最终生成 libjni-native.so
SOURCE_FILES=("src/jni_interface.cpp""src/algorithm.c"
)
INCLUDE_DIRS=("${NDK_PATH}/sources/android/support/include""jni"
)
CFLAGS+=" -D__ARM_NEON__"  # 启用NEON指令集
示例2:编译可执行文件
 

bash

复制

TARGET_TYPE="exec"
OUTPUT_NAME="android-cli-tool"
SOURCE_FILES=("src/main.c""src/crypto.c"
)
LDFLAGS+=" -lm"  # 链接数学库

4. 常见问题解决

  1. ​找不到头文件​​:

    • 检查 INCLUDE_DIRS 是否包含所有必要路径
    • 使用 -v 参数查看详细搜索路径:
       

      bash

      复制

      ${CC} -v ${CFLAGS} ${INCLUDE_FLAGS} test.c
  2. ​链接失败​​:

    • 确保 LDFLAGS 包含需要的库(如 -llog 用于Android Log)
    • 检查ABI兼容性:
       

      bash

      复制

      readelf -h ${OUTPUT} | grep Machine
  3. ​调试版本​​:

    • 移除 STRIP 步骤
    • 添加调试符号:
       

      bash

      复制

      CFLAGS+=" -g -O0"

5. 与FFmpeg联合编译

如果需要链接已编译的FFmpeg库:

 

bash

复制

# 在配置区添加
INCLUDE_DIRS+=("/home/wu/my-ffmpeg/ffmpeg-7.1/android/arm64-v8a/include"
)
LDFLAGS+=" -L/home/wu/my-ffmpeg/ffmpeg-7.1/android/arm64-v8a/lib -lavcodec -lavformat"

这个脚本提供了灵活的交叉编译解决方案,可根据实际需求调整参数。

http://www.dtcms.com/wzjs/571926.html

相关文章:

  • 湖南微信网站wordpress 缩略图变形
  • 专注网站建设微信开发太原网页设计师招聘信息
  • 忻州网站建设培训小型建筑公司有哪些
  • 免费网站服务器2020可以注册的网站
  • 佛山p2p网站建设新开传奇新服网手机版
  • 网站建设在整体布局有哪些要求杭州旺道企业服务有限公司
  • 网站排版asp源码 自助建站
  • 阳信住房和城乡建设厅网站wordpress 传到哪里去
  • 电子商务网站平台建设预算不包括河南网站建设37518
  • 门户网站app开发企业品牌策划书
  • 网站开设作风建设专栏黄石网站设计
  • 如何给网站做dns解析品牌设计公司企业logo设计
  • 响应式网站是指自适应吗百度seo价格查询系统
  • 做团餐 承包食堂的企业网站怎么自己做淘宝网站
  • 济源网站建设费用wp网站如何做多级联动筛选框
  • 货运代理东莞网站建设赚钱做网站
  • 深圳建站公司品牌网站建设wordpress对接api
  • 家居设计网站推荐中国建筑公司排名一览表
  • 网站开发费用属于哪种无形资产网站开发参考文献2015年后
  • 用于公司网站建设的费用记帐分录南京的网站建设公司哪家好
  • 进入网站后台ftp空间后怎样上传做的网站第二年续费多钱
  • 人工智能平台seo怎么发文章 seo发布工具
  • 人才招聘网网站策划方案网络构建工作室
  • 展览馆网站建设方案书如何提高网站的收录
  • 做接口的网站如何弄自己的网站
  • 百度网站推广电话宁波网页制作模板
  • 响应式网站设计布局免费建立网站的网站都有啥
  • 网站架构师招聘wordpress主题 卢松松
  • 自由做图网站gta5买房子网站建设
  • 遵义网站建公司chaincd wordpress