如何在为 ARM 构建 libmfx 时解决 "impossible constraint in asm" 的问题?

How to solve the problem with "impossible constraint in asm" while building libmfx for ARM?

我有问题。我正在尝试从源代码为 ARM v7-a 处理器编译 libmfx。但是当我启动“make”时出现错误:

源码在src/mfx_critical_section_linux.cpp:

mfxU32 mfxInterlockedCas32(mfxCriticalSection *pCSection, mfxU32 value_to_exchange, mfxU32 value_to_compare)
{
    mfxU32 previous_value;

    asm volatile ("lock; cmpxchgl %1,%2"
                  : "=a" (previous_value)
                  : "r" (value_to_exchange), "m" (*pCSection), "0" (value_to_compare)
                  : "memory", "cc");
    return previous_value;
}

为什么约束是不可能的?我应该怎么做才能解决这个问题?

lock; cmpxchgl 是 x86 汇编代码。真的不足为奇,因为 libmfx 是一个 Intel 库(例如,libmfx 是由制造 x86 芯片的公司编写的)。它确实不是为在 ARM 上编译而设计的。