android 32位 v8编译错误,makefile - android使用arm64-v8a ABI编译错误“未定义引用” - 堆栈内存溢出...

博主分享在Android开发中,添加arm64 - v8a到APP_ABI后出现编译错误,错误信息为stubs/once.h:125处未定义对google::protobuf::internal::Acquire_Load的引用。还给出了相关宏定义代码,但博主不熟悉编译,不清楚问题所在,希望得到建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:

protocol buffer: 2.5.0

ndk: android-ndk-r13b

ant: apache-ant-1.9.4

cocos2d-x: 3.12

os: mac 10.12

但是最近我必须将arm64-v8a添加到APP_ABI中,并且开始出现以下错误:

stubs/once.h:125: undefined reference to

google::protobuf::internal::Acquire_Load(long const volatile*)

然后我检查,发现Acquire_Load在声明stubs/atomicops.h了宏:

#ifdef GOOGLE_PROTOBUF_ARCH_64_BIT

// ......

Atomic64 Acquire_Load(volatile const Atomic64* ptr);

// ......

#endif // GOOGLE_PROTOBUF_ARCH_64_BIT

并在stubs/platform_macros.h定义了GOOGLE_PROTOBUF_ARCH_64_BIT宏:

#if defined(_M_X64) || defined(__x86_64__)

#define GOOGLE_PROTOBUF_ARCH_X64 1

#define GOOGLE_PROTOBUF_ARCH_64_BIT 1

#elif defined(_M_IX86) || defined(__i386__)

#define GOOGLE_PROTOBUF_ARCH_IA32 1

#define GOOGLE_PROTOBUF_ARCH_32_BIT 1

#elif defined(__QNX__)

#define GOOGLE_PROTOBUF_ARCH_ARM_QNX 1

#define GOOGLE_PROTOBUF_ARCH_32_BIT 1

#elif defined(__ARMEL__)

#define GOOGLE_PROTOBUF_ARCH_ARM 1

#define GOOGLE_PROTOBUF_ARCH_32_BIT 1

#elif defined(__MIPSEL__)

#define GOOGLE_PROTOBUF_ARCH_MIPS 1

#define GOOGLE_PROTOBUF_ARCH_32_BIT 1

#elif defined(__pnacl__)

#define GOOGLE_PROTOBUF_ARCH_32_BIT 1

#elif defined(__ppc__)

#define GOOGLE_PROTOBUF_ARCH_PPC 1

#define GOOGLE_PROTOBUF_ARCH_32_BIT 1

#elif defined(__aarch64__)

#define GOOGLE_PROTOBUF_ARCH_ARM 1

#define GOOGLE_PROTOBUF_ARCH_64_BIT 1

#else

#error Host architecture was not detected as supported by protobuf

#endif

我对编译东西不是很熟悉,所以无法弄清楚哪里出了问题。

任何建议将不胜感激,谢谢:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值