我有一个旧的C ++项目,我在构建它时遇到了问题。对于某个文件,我收到以下类型的错误:
错误:未在此范围内声明'atomic_t'
还有其他标识符,例如atomic_read,atomic_inc等。该文件包含asm / atomic.h,但我找不到我的系统上的头文件。我正在使用SUSE Linux Enterprise Desktop 11和gcc 4.3.2。
是否需要安装某些软件包,或者为这些标识符包含一个替代标头?
答案 0 :(得分:1)
这些是内核头文件,不适用于要使用的应用程序。它们是在汇编程序中实现的一些原子测试和设置,递增,递减等的原型。
因此,即使您找到了头文件,您仍然需要来自asm或.asm源的.o。
这些不是您要查找的文件,但它们很可能是相同或相似的。
http://github.com/github/linux-2.6/blob/3067e02f8f3ae2f3f02ba76400d03b8bcb4942b0/arch/sh/include/asm/atomic.h http://github.com/apache/stdcxx/blob/7b51a66e3db202b7d317c74a5666aaeef7b4ebd0/src/atomic.asm