为什么双重不能在MINIX 3中使用?

时间:2015-12-01 04:35:34

标签: c compiler-errors operating-system minix

我正在研究MINIX 3.我改变了进程调度程序,我想在那里进行一些测试。

问题在于,当我想使用double时,我收到了错误消息。有趣的是,如果我在类中的全局中声明并初始化double variable,它不显示错误,但是当我想在方法中使用相同的double variable时,并尝试编译MINIX 3(版本3.1.6)我收到此错误:

/usr/lib/em_led: /usr/lib/i386/libc.a(exit.o): multiply defined (error)
Undefined:
     _test_variable (<---- the name of the variable is "test_variable")
make in /usr/src/kernel: Exit code 1
make in /usr/src/tools: Exit code 1
make: made 'image' look old

当我使用make hdboot中的/usr/src/tools命令时会发生这种情况,我在make install之后使用

有人知道这里的问题是什么吗?

EDITED

代码是:

FORWARD _PROTOTYPE( struct proc * pick_proc, (void));
FORWARD _PROTOTYPE( void enqueue_head, (struct proc *rp));
double test_variable;

//(the Variable **test_variable** one is Declared on TOP of the class after the Includes and after the declarations of the Methods 

PRIVATE struct proc * pick_proc(void)
{
    register struct proc *rp;           /* process to run */
int q;              /* iterate over queues */
int proceset;
proc_nr_t proci;
if (first_time == 1)
{
    test_variable = 6.5;
}

1 个答案:

答案 0 :(得分:0)

  1. 尝试重命名您的变量,并将其设为static

  2. 我无法专门对MINIX-3保证这一点,但我敢打赌,您可能无法在调度程序或任何其他核心子系统,服务器,驱动程序中使用浮点数,或内核(使用intlong)。