linux C Cmake交叉编译android时操作指针报[1] + Illegal instruction 设备为anrdoid 5.1 API 22 armeabi-v7a
时间: 2024-06-05 15:10:06 浏览: 19
这个问题可能是由于指针操作与目标设备CPU架构不兼容所导致的。请确认你使用的交叉编译工具链与目标设备的CPU架构匹配。
另外,Illegal instruction 错误通常表示执行了一个不兼容的指令,可能是由于使用了不支持的CPU指令集或者编译器优化等原因导致的。你可以尝试关闭编译器优化选项,并检查你的代码是否使用了不支持的指令集。
如果以上方法都无法解决问题,你可以尝试使用调试工具来定位问题所在,例如 GDB 和 strace 等。同时,你也可以查看相关的日志信息,以确定问题的具体原因。
相关问题
android cmake 根据平台armeabi-v7a和arm64-v8a调用 target_link_libraries
你可以使用 `if` 和 `elseif` 块来判断当前平台,从而调用正确的 `target_link_libraries`。例如:
```
if (${ANDROID_ABI} STREQUAL "armeabi-v7a")
target_link_libraries(your_target lib1_armeabi-v7a lib2_armeabi-v7a)
elseif (${ANDROID_ABI} STREQUAL "arm64-v8a")
target_link_libraries(your_target lib1_arm64-v8a lib2_arm64-v8a)
endif()
```
其中,`ANDROID_ABI` 是一个 CMake 自带的变量,表示当前平台的 ABI。`lib1_armeabi-v7a` 和 `lib2_armeabi-v7a` 分别表示适用于 `armeabi-v7a` 平台的库文件,`lib1_arm64-v8a` 和 `lib2_arm64-v8a` 分别表示适用于 `arm64-v8a` 平台的库文件。你需要将这些库文件添加到 `CMakeLists.txt` 文件中的 `target_link_libraries` 命令中。
cmake\3.10.2.4988404\bin\ninja.exe with arguments {-C D:\333\media-demo\app\.cxx\cmake\debug\armeabi-v7a opus-user}
这个命令是使用 CMake 构建 Android 应用时使用的。其中包含以下参数:
- `-C`:指定 CMake 构建目录。
- `D:\333\media-demo\app\.cxx\cmake\debug\armeabi-v7a`:指定构建目标的路径。
- `opus-user`:指定要构建的目标名称。
最终目的是使用 Ninja 构建 Android 应用的 opus-user 目标。