<学习笔记>安卓模拟器错误:INSTALL_FAILED_CPU_ABI_INCOMPATIBLE

本文介绍了如何解决Genymotion模拟器上出现的INSTALL_FAILED_CPU_ABI_INCOMPATIBLE错误。通过拖拽特定的ARM转换补丁包到模拟器中并进行转换,可以解决因模拟器架构与应用不匹配导致的问题。

INSTALL_FAILED_CPU_ABI_INCOMPATIBLE,字面上意思是因为CPU不完整,缺少东西。

解决方法就是拖一个包“Genymotion-ARM-Translation”,到模拟器里面,然后确认转换即可。



genymotion的模拟器是一个搭建在x86系统和VM中的虚拟安卓环境。它不是一个ARM架构的模拟器。所以他跑起来比Eclipse自带的AVD流畅。但是在他们最新的更新中去掉

了ARM的转换以及谷歌服务,所以导致了如题所示的error。所以拖拽的那个包就是类似于genymotion的ARM补丁包,拖进去translate一下即可。

Undefined symbols for architecture arm64: "std::__1::locale::use_facet(std::__1::locale::id&) const", referenced from: std::__1::ctype<char> const& std::__1::use_facet[abi:ne180100]<std::__1::ctype<char>>(std::__1::locale const&) in CPP-ff0177.o "std::__1::ios_base::getloc() const", referenced from: std::__1::basic_ios<char, std::__1::char_traits<char>>::widen[abi:ne180100](char) const in CPP-ff0177.o "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::__init(unsigned long, char)", referenced from: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_string[abi:ne180100](unsigned long, char) in CPP-ff0177.o "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::~basic_string()", referenced from: std::__1::ostreambuf_iterator<char, std::__1::char_traits<char>> std::__1::__pad_and_output[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char>>, char const*, char const*, char const*, std::__1::ios_base&, char) in CPP-ff0177.o std::__1::ostreambuf_iterator<char, std::__1::char_traits<char>> std::__1::__pad_and_output[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char>>, char const*, char const*, char const*, std::__1::ios_base&, char) in CPP-ff0177.o "std::__1::basic_istream<char, std::__1::char_traits<char>>::operator>>(int&)", referenced from: _main in CPP-ff0177.o _main in CPP-ff0177.o _main in CPP-ff0177.o _main in CPP-ff0177.o "std::__1::basic_ostream<char, std::__1::char_traits<char>>::put(char)", referenced from: std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::endl[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&) in CPP-ff0177.o "std::__1::basic_ostream<char, std::__1::char_traits<char>>::flush()", referenced from: std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::endl[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&) in CPP-ff0177.o "std::__1::basic_ostream<char, std::__1::char_traits<char>>::sentry::sentry(std::__1::basic_ostream<char, std::__1::char_traits<char>>&)", referenced from: std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in CPP-ff0177.o "std::__1::basic_ostream<char, std::__1::char_traits<char>>::sentry::~sentry()", referenced from: std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in CPP-ff0177.o std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in CPP-ff0177.o "std::__1::basic_ostream<char, std::__1::char_traits<char>>::operator<<(double)", referenced from: _main in CPP-ff0177.o "std::__1::basic_ostream<char, std::__1::char_traits<char>>::operator<<(int)", referenced from: _main in CPP-ff0177.o "std::__1::cin", referenced from: _main in CPP-ff0177.o "std::__1::cout", referenced from: _main in CPP-ff0177.o "std::__1::ctype<char>::id", referenced from: std::__1::ctype<char> const& std::__1::use_facet[abi:ne180100]<std::__1::ctype<char>>(std::__1::locale const&) in CPP-ff0177.o "std::__1::locale::~locale()", referenced from: std::__1::basic_ios<char, std::__1::char_traits<char>>::widen[abi:ne180100](char) const in CPP-ff0177.o std::__1::basic_ios<char, std::__1::char_traits<char>>::widen[abi:ne180100](char) const in CPP-ff0177.o "std::__1::ios_base::__set_badbit_and_consider_rethrow()", referenced from: std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in CPP-ff0177.o "std::__1::ios_base::clear(unsigned int)", referenced from: std::__1::ios_base::setstate[abi:ne180100](unsigned int) in CPP-ff0177.o "std::terminate()", referenced from: ___clang_call_terminate in CPP-ff0177.o "___cxa_begin_catch", referenced from: std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in CPP-ff0177.o ___clang_call_terminate in CPP-ff0177.o "___cxa_call_unexpected", referenced from: std::__1::char_traits<char>::length[abi:ne180100](char const*) in CPP-ff0177.o std::__1::ostreambuf_iterator<char, std::__1::char_traits<char>>::ostreambuf_iterator[abi:ne180100](std::__1::basic_ostream<char, std::__1::char_traits<char>>&) in CPP-ff0177.o "___cxa_end_catch", referenced from: std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in CPP-ff0177.o std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in CPP-ff0177.o "___gxx_personality_v0", referenced from: /private/var/folders/nt/_wsd9hj903q7pgvy73frnx4c0000gn/T/CPP-ff0177.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation) v_fengte@MacBook-Pro ddd %
最新发布
07-01
你遇到的错误是典型的 **C++ 链接器错误(Undefined symbols)**,表明编译过程成功但链接失败。这通常发生在使用 C++ 标准库时,但没有正确链接标准库或编译器调用方式不正确。 --- ## ✅ 问题分析 你看到的错误信息如: ``` Undefined symbols for architecture arm64: "std::__1::locale::use_facet(...)", "std::__1::basic_string<...>::__init(...)", "std::terminate()", ... ``` 说明程序引用了 **C++ 标准库中的符号**,但在链接阶段找不到这些实现。这意味着: ### ❌ 错误原因可能包括: 1. **你使用了 `.c` 扩展名保存 C++ 代码**,导致编译器当作 C 语言处理。 2. **使用 `gcc` 而不是 `g++` 或 `clang++` 编译 C++ 程序**,不会自动链接 C++ 标准库。 3. **缺少 `-lstdc++` 或 `-lc++` 链接标志**(在某些环境下需要显式添加)。 4. **项目配置错误**(如 Xcode 中未设置正确的 C++ 标准库)。 5. **M1/M2 Mac 上的架构兼容性问题(arm64 vs x86_64)**。 --- ## ✅ 正确做法 ### ✅ 方法一:使用 `g++` 或 `clang++` 编译 C++ 文件 确保你的源文件是 `.cpp` 结尾,并使用 `g++` 或 `clang++` 编译: ```bash clang++ your_file.cpp -o your_program ``` 或 ```bash g++ your_file.cpp -o your_program ``` ### ✅ 方法二:如果你使用的是 `.c` 文件,请重命名为 `.cpp` 例如: ```bash mv main.c main.cpp ``` 然后重新编译: ```bash clang++ main.cpp -o main ``` ### ✅ 方法三:显式链接 C++ 标准库(可选) 如果仍报错,尝试加上标准库链接选项(适用于某些旧环境): ```bash clang++ main.cpp -o main -lc++ ``` 或 ```bash clang++ main.cpp -o main -lstdc++ ``` --- ## ✅ 示例验证 假设你有如下 C++ 程序 `main.cpp`: ```cpp #include <iostream> using namespace std; int main() { int a; cin >> a; cout << "Input: " << a << endl; return 0; } ``` 正确编译命令应为: ```bash clang++ main.cpp -o main ``` 运行结果: ```bash ./main # 输入一个数字后输出类似: # Input: 123 ``` --- ## ✅ 其他建议(Mac M1/M2 用户) - 如果你在 Apple Silicon(M1/M2)芯片上开发,确保你安装的是支持 arm64 的工具链。 - 使用 Homebrew 安装 LLVM(支持 arm64): ```bash brew install llvm ``` - 设置别名使用最新 clang: ```bash alias clang++="/opt/homebrew/opt/llvm/bin/clang++" ``` --- ##
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值