ZBLOG

clang++: error: unsupported option '-mfpu=' for target 'aarch64-linux-android24' clang++: error: unsupported option '-mfpu=' for target 'aarch64-linux-android24' clang++: error: unsupported option '-mfpu=' for target 'aarch64-linux-android24' make...

根据你提供的错误信息,clang++ 报告了关于 -mfpu= 选项的支持问题。这是因为 -mfpu 是为 ARM 的某些目标架构(如 ARMv7 和之前版本)设计的,而在编译为 AArch64(ARM64)的代码时,不需要使用这个选项。

修正方法

  1. 移除 -mfpu 选项: 在你的 CXXFLAGS 中移除 -mfpu=neon。AArch64 架构本身就支持 NEON 指令集,所以不需要显式指定。

    修改后的 CXXFLAGS 如下:

    CXXFLAGS="-fPIC -DANDROID -D__ANDROID_API__=${API_LEVEL} -target aarch64-linux-android${API_LEVEL}"
    
  2. 检查其他编译标志: 确保你的其他编译标志没有包含针对特定于旧架构的参数。

示例修改后的脚本

下面是修改后的完整脚本示例:

#!/bin/bash

# 设置 NDK 路径和目标架构
NDK_PATH=/home/juju/rk3588/android-ndk-r27c 
TARGET_ABI=arm64-v8a    # 或者其他架构,如 armeabi-v7a, x86 等
API_LEVEL=24             # Android API Level

# 设置工具链路径
TOOLCHAIN=$NDK_PATH/toolchains/llvm/prebuilt/linux-x86_64

# 使用 clang 作为 C++ 编译器
CXX="${TOOLCHAIN}/bin/clang++"

# 设定相关参数并进行编译 
make clean               # 清理之前的构建(如果有的话)

make -j$(nproc)          \
    CC="${TOOLCHAIN}/bin/clang"                      \
    CXX="${CXX}"                                       \
    AR="${TOOLCHAIN}/bin/llvm-ar"                     \
    RANLIB="${TOOLCHAIN}/bin/llvm-ranlib"             \
    LINK="${CXX}"                                      \
    CXXFLAGS="-fPIC -DANDROID -D__ANDROID_API__=${API_LEVEL} -target aarch64-linux-android${API_LEVEL}"

if [ $? -ne 0 ]; then echo "Build failed"; exit; fi

echo "Build completed successfully"

进一步调试

如果在修正后仍然遇到问题,请确认以下几点:

  1. 头文件引用:确保所有需要的头文件都被正确引用,例如 <arm_neon.h>
  2. 源代码兼容性:确保源代码与所选择的 API level 和 ABI 一致。
  3. NDK 版本:有时较旧或较新的 NDK 可能存在不同的支持情况,尽量使用稳定版。

如果仍然出现其他错误,请将错误信息反馈,我将帮助你进一步排查。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:http://sdn.0voice.com/?id=6951

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?