如何定义对函数的未定义引用

时间:2019-05-22 13:44:02

标签: ubuntu-16.04 beagleboneblack

我正在与Xenomai和RTnet合作开发两个Beaglebone Black。我在BBB之间有两个用于往返以太网帧的c文件。当我尝试编译第一个C文件时,会发生一些错误:

对“ rt_task_self”的未定义引用

rt_task_self是我的c文件中的一个函数,并在我的头文件“ task.h”中声明。因此,我认为“未定义”意味着在头文件“ task.h”的任何cpp文件“ task.cpp”中都未定义它。

但是我有些困惑:如何告诉程序我的头文件“ task.h”是在其他文件“ task.cpp”或“ task.o”中定义的还是... 我的C文件中有很多头文件,但“ task.h”文件只有一个错误,并且在“ task.h”和所有其他头文件之间的#include行中没有看到任何区别。

往返C文件的一部分:

let $dir := (
          let $current := map:map()
          let $_ := map:put($current, "element", "")
          for $uri in cts:uris()
            let $toks := fn:tokenize($uri, "/")
            let $element :=  if (map:get($current, "element") ne $toks[2]) then  element directory { $toks[2] }  else ()
            let $_ := map:put($current, "element", $toks[2]) 
            return if ($element/text() ne "") then $element else  () 
    )

  let $doc := document { element root { $dir } }
  return $doc 

task.h的一部分:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <unistd.h>

/*XENOMAI*/
#include "task.h"
#include <rtdm/rtdm.h>
#include <asm/ioctl.h>

#define SERVER "192.168.127.10"
#define BUFLEN 512
#define PORT 8888

void die(char *s)
{
    perror(s);
    exit(1);
}

往返c文件中另一个头文件的一部分:

#ifndef _XENO_TASK_H
#define _XENO_TASK_H

#include <nucleus/sched.h>
#include <native/types.h>

/* Creation flags. */
#define T_FPU     XNFPU
#define T_SUSP    XNSUSP
/* <!> High bits must not conflict with XNFPU|XNSHADOW|XNSUSP. */
#define T_CPU(cpu) (1 << (24 + (cpu & 7))) /* Up to 8 cpus [0-7] */
#define T_CPUMASK  0xff000000

我的制作文件:

#ifndef _RTDM_H
#define _RTDM_H

#ifdef __KERNEL__

#include <linux/types.h>
#include <linux/fcntl.h>
#include <linux/ioctl.h>
#include <linux/sched.h>
#include <linux/socket.h>

typedef u32 socklen_t;
typedef struct task_struct rtdm_user_info_t;

#else /* !__KERNEL__ */

#include <fcntl.h>
#include <stddef.h>
#include <stdint.h>
#include <sys/ioctl.h>
#include <sys/socket.h>

0 个答案:

没有答案