首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在raspberry pi 3上编译xenomai v2代码(使用xenomai v3编译的内核v4.y )

在raspberry pi 3上编译xenomai v2代码(使用xenomai v3编译的内核v4.y )
EN

Stack Overflow用户
提问于 2017-05-02 13:47:37
回答 1查看 204关注 0票数 0

在这里面临一个特殊的问题。

我试图在Raspberry PI 3(用xenomai v3.0.3编译的Linux v4.1.21 )上编译这段代码https://github.com/severinson/VLC-driver,但是我得到了多个编译器错误

代码语言:javascript
复制
make -C /lib/modules/4.1.21-xenomai+/build M=/home/pi/VLC-driver modules
make[1]: Entering directory '/home/pi/linux'
  CC [M]  /home/pi/VLC-driver/vlc_timer_handler.o
 /home/pi/VLC-driver/vlc_timer_handler.c:16:9: error: unknown type name ‘rtdm_task_t’
 rtdm_task_t rx_handler_task; 
 ^
 /home/pi/VLC-driver/vlc_timer_handler.c:66:1: error: unknown type name ‘rtdm_sem_t’
  rtdm_sem_t rx_sem;
  ^
 /home/pi/VLC-driver/vlc_timer_handler.c:67:1: error: unknown type name ‘rtdm_sem_t’
 rtdm_sem_t tx_sem;
  ^
 /home/pi/VLC-driver/vlc_timer_handler.c: In function ‘send_bit’:
 /home/pi/VLC-driver/vlc_timer_handler.c:82:3: error: implicit declaration of function ‘rtdm_task_sleep_abs’ [-Werror=implicit-function-declaration]
    rtdm_task_sleep_abs(tx_sleep_slot, RTDM_TIMERMODE_ABSOLUTE);
    ^
 /home/pi/VLC-driver/vlc_timer_handler.c:82:38: error: ‘RTDM_TIMERMODE_ABSOLUTE’ undeclared (first use in this function)
    rtdm_task_sleep_abs(tx_sleep_slot, RTDM_TIMERMODE_ABSOLUTE);
                                       ^
 /home/pi/VLC-driver/vlc_timer_handler.c:82:38: note: each undeclared identifier is reported only once for each function it appears in
 /home/pi/VLC-driver/vlc_timer_handler.c: In function ‘get_bit_early_late’:
 /home/pi/VLC-driver/vlc_timer_handler.c:117:25: error: ‘RTDM_TIMERMODE_ABSOLUTE’ undeclared (first use in this function)
                     RTDM_TIMERMODE_ABSOLUTE);
                     ^
 /home/pi/VLC-driver/vlc_timer_handler.c: In function ‘get_bit’:
 /home/pi/VLC-driver/vlc_timer_handler.c:168:38: error: ‘RTDM_TIMERMODE_ABSOLUTE’ undeclared (first use in this function)
    rtdm_task_sleep_abs(rx_sleep_slot, RTDM_TIMERMODE_ABSOLUTE);
                                       ^
 /home/pi/VLC-driver/vlc_timer_handler.c: In function ‘tx_send_ack’:
 /home/pi/VLC-driver/vlc_timer_handler.c:195:5: warning: this decimal constant is unsigned only in ISO C90
      send_bit(mask_bit((int) VLC_ACK, i));
      ^
 /home/pi/VLC-driver/vlc_timer_handler.c: In function ‘rx_get_preamble’:
 /home/pi/VLC-driver/vlc_timer_handler.c:346:5: warning: this decimal constant is unsigned only in ISO C90
      if(rx_packet->current_preamble == (int) VLC_ACK){
      ^
 /home/pi/VLC-driver/vlc_timer_handler.c: In function ‘rx_send_ack’:
 /home/pi/VLC-driver/vlc_timer_handler.c:424:5: warning: this decimal constant is unsigned only in ISO C90
      if(rx_packet->current_preamble == (int) VLC_ACK){
      ^
 /home/pi/VLC-driver/vlc_timer_handler.c: In function ‘setup_timer_handler’:
 /home/pi/VLC-driver/vlc_timer_handler.c:468:3: error: implicit declaration of function ‘rtdm_sem_init’ [-Werror=implicit-function-declaration]
    rtdm_sem_init(&tx_sem, 1);
    ^
 /home/pi/VLC-driver/vlc_timer_handler.c:472:3: error: implicit declaration of function ‘rtdm_clock_read_monotonic’ [-Werror=implicit-function-declaration]
    rx_sleep_slot = rtdm_clock_read_monotonic();
    ^
 /home/pi/VLC-driver/vlc_timer_handler.c:481:3: error: implicit declaration of function ‘rtdm_task_init’ [-Werror=implicit-function-declaration]
    rtdm_task_init(&rx_handler_task, "VLC rx handler", rx_handler, 
    ^
 /home/pi/VLC-driver/vlc_timer_handler.c:482:24: error: ‘RTDM_TASK_HIGHEST_PRIORITY’ undeclared (first use in this function)
              NULL, RTDM_TASK_HIGHEST_PRIORITY, 0);
                    ^
 /home/pi/VLC-driver/vlc_timer_handler.c:492:3: error: implicit declaration of function ‘rtdm_task_destroy’ [-Werror=implicit-function-declaration]
    rtdm_task_destroy(&rx_handler_task);
    ^
 /home/pi/VLC-driver/vlc_timer_handler.c: In function ‘cleanup_timer_handler’:
 /home/pi/VLC-driver/vlc_timer_handler.c:502:3: error: implicit declaration of function ‘rtdm_sem_destroy’ [-Werror=implicit-function-declaration]
    rtdm_sem_destroy(&rx_sem);
    ^
 cc1: some warnings being treated as errors
 scripts/Makefile.build:258: recipe for target '/home/pi/VLC-driver/vlc_timer_handler.o' failed
 make[2]: *** [/home/pi/VLC-driver/vlc_timer_handler.o] Error 1
 Makefile:1384: recipe for target '_module_/home/pi/VLC-driver' failed
 make[1]: *** [_module_/home/pi/VLC-driver] Error 2
 make[1]: Leaving directory '/home/pi/linux'
 Makefile:15: recipe for target 'all' failed
 make: *** [all] Error 2

我能够在Raspberry PI ( Linux Kernel 3.10.25 with xenomai v2.6.3 )上成功编译这段代码。我确实遇到了一些缺少头文件的问题,但没有任何问题不能使用CCFLAGS进行排序,并包括正确的头文件位置。

前面还有一些其他的编译器错误(缺少头文件),但我使用这个EXTRA_CFLAGS =-I$(KERNEL_SRC)/include/xenomai -I$(KERNEL_SRC)/include/xenomai/native -I/home/pi/xenomai-3.0.3/include/trank -I/usr/include/arm-linux-gnueabihf -I/usr/xenomai/include/cobalt -I/usr/include -I/usr/xenomai/include -L/usr/xenomai/lib -lpthread_rt -lpthread -lrt对它们进行了排序

在Makefile中

但是现在我收到了编译器错误(见上)

我希望我已经提供了足够的关于这方面的信息。任何帮助都将不胜感激

EN

回答 1

Stack Overflow用户

发布于 2017-05-02 16:14:08

rtdm/rtdm_driver.h中定义了rtdm_task_t

有没有可能你错过了一条关于'rtdm_driver.h‘没有被找到的错误信息?

我看到有这样的错误消息,你是通过修改来“修复”的吗?

建议回到原始代码,特别是Makefile中的原始代码,然后找出为什么编译器看不到所有需要的头文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43730932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档