【发布时间】:2015-02-10 06:12:58
【问题描述】:
使用 Codesourcery arm-linux-eabi 交叉编译器并且编译器无法执行某些代码时遇到问题,因为它认为它没有被使用,尤其是对于系统调用。有没有办法解决这个问题?
例如这段代码没有初始化变量。
unsigned int temp = 42;
asm volatile("mov R1, %0 :: "r" (temp));
asm volatile("swi 1");
在这种情况下 temp 永远不会被初始化为值 42。但是,如果我在初始化后添加一个 printk,它会被初始化为正确的值 42。我尝试了
unsigned int temp __attribute__ ((used)) = 42;
仍然不起作用,但我收到一条警告消息:
'used' 属性被忽略 [-Wattributes]
这是在 linux 内核代码中。
有什么建议吗?
【问题讨论】:
标签: c compiler-construction arm