我正在研究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;
}
答案 0 :(得分:0)
尝试重命名您的变量,并将其设为static
。
我无法专门对MINIX-3保证这一点,但我敢打赌,您可能无法在调度程序或任何其他核心子系统,服务器,驱动程序中使用浮点数,或内核(使用int
或long
)。