树莓派官方V4L2驱动程序,如何将lrt标志添加到makefile?

问题描述:

我正在创建一个在树莓派上使用v41的小型python应用程序。经过几个小时的故障排除,我已经接近安装它了。我只需要编译官方V4L2驱动程序。树莓派官方V4L2驱动程序,如何将lrt标志添加到makefile?

我下面这个教程https://www.ics.com/blog/raspberry-pi-camera-module#.VAaCHqM0_YQ

当我到了化妆一步,我得到这个错误:undefined reference to symbol 'clock_gettime'

谷歌搜索告诉我,我需要“-lrt添加到库列表你链接到“,或者把它放在makefile中。我对制作和配置一无所知。我尝试阅读一些内容,但是我正在为此工作,并没有时间参加课程。我不知道该怎么办...请帮助...

我还应该提到,我只是不知道我是否要更改makefile或makefile.in或配置?我试图将"-lrt"放置在makefile中,但找出它的位置很复杂和令人困惑。

下面是实际的错误:

Making all in v4l2-compliance 
make[3]: Entering directory '/home/pi/v4l-utils/utils/v4l2-compliance' 
    CXXLD v4l2-compliance 
/usr/bin/ld: v4l2-test-buffers.o: undefined reference to symbol '[email protected]@ 
GLIBC_2.4' 
//lib/arm-linux-gnueabihf/librt.so.1: error adding symbols: DSO missing from com 
mand line 
collect2: ld returned 1 exit status 
Makefile:388: recipe for target 'v4l2-compliance' failed 
make[3]: *** [v4l2-compliance] Error 1 
make[3]: Leaving directory '/home/pi/v4l-utils/utils/v4l2-compliance' 
Makefile:347: recipe for target 'all-recursive' failed 
make[2]: *** [all-recursive] Error 1 
make[2]: Leaving directory '/home/pi/v4l-utils/utils' 
Makefile:386: recipe for target 'all-recursive' failed 
make[1]: *** [all-recursive] Error 1 
make[1]: Leaving directory '/home/pi/v4l-utils' 
Makefile:315: recipe for target 'all' failed 
make: *** [all] Error 2 

我尝试编辑Makefile文件,发现上面写着“LIBS =”,我改成了“LIBS = -lrt”,这没有奏效。

我发现线388在Makefile这是它在这方面的记载:

# This directory's subdirectories are mostly independent; you can cd 
# into them and run `make' without going through this Makefile. 
# To change the values of `make' variables: instead of editing Makefiles, 
# (1) if the variable is set in `config.status', edit `config.status' 
#  (which will cause the Makefiles to be regenerated when you run `make'); 
# (2) otherwise, pass the desired values on the `make' command line. 
$(RECURSIVE_TARGETS): 
    @fail= failcom='exit 1'; \ 
    for f in x $$MAKEFLAGS; do \ 
     case $$f in \ 
     *=* | --[!k]*);; \ 
     *k*) failcom='fail=yes';; \ 
     esac; \ 
    done; \ 
    dot_seen=no; \ 
    target=`echo [email protected] | sed s/-recursive//`; \ 
    list='$(SUBDIRS)'; for subdir in $$list; do \ 
     echo "Making $$target in $$subdir"; \ 
     if test "$$subdir" = "."; then \ 
     dot_seen=yes; \ 
     local_target="$$target-am"; \ 
     else \ 
     local_target="$$target"; \ 
     fi; \ 
     ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ 
     || eval $$failcom; \ 
    done; \ 
    if test "$$dot_seen" = "no"; then \ 
     $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ 
    fi; test -z "$$fail" 

所以我试图运行做出这样的:让CFLAGS =“ - 轻轨”,那什么也没做。 我看着config.status,这是另一个令人困惑的文件。

+0

我也有问题'make'和阅读自述文件后发现,必须运行'/ bootstrap.sh'前'/ configure',一些没”。 t在ics.com toturial中提到。 – SAMPro 2016-07-19 06:19:00

我付了一个顾问,他让我改变两个不同的文件。

第一个文件:
/v4l-utils/utils/v4l2-compliance/Makefile

第二个文件:
/v4l-utils/utils/v4l2-ctl/Makefile

更改为 “LDFLAGS =” 到 “LDFLAGS = -lrt”

的行V4L2后刚刚编译罚款树莓派。

这工作太: -

LDFLAGS=-lrt ./configure 
make