zoukankan      html  css  js  c++  java
  • libvlc_new 调用产生段错误

    在调试程序的时候,碰到一个奇怪的段错误问题。只要链接的时候使用-Wl,-rpath=./vlc/lib就会产生段错误,如果链接的时候使用的是-Wl,-rpath=../../tool/vlc/lib则不会出现。

    机器是老旧的NeoKylin 4.0版本,没有安装gdb(实际上也不可能去安装)。无法调试,所以在程序里多添加了一些打印输出,终于定位到产生段错误的位置。

    代码

    输出

    查了一些资料
    http://www.videolan.org/developers/vlc/doc/doxygen/html/group__libvlc__core.html

    这里说 在POSIX系统上,SIGCHLD信号不能被忽略,即信号处理程序必须设置为SIG_DFL(默认处理)或函数指针,而不能是SIG_IGN(忽略)。
    还有 LibVLC可以创建线程。 因此,任何线程不安全的进程初始化必须在调用libvlc_new()之前执行。

    但是这里没有说到重点,这些都不是产生段错误的原因。
    真正的原因是因为vlc存在插件缓存,需要刷新插件缓存才行。
    vlc/lib/vlc/plugins下存在一个plugins.bat文件,cat这个文件可以发现其中大部分都是普通文本,少数是非文本内容。

    通过网络搜索,找到这篇文章,真正的说明了问题 http://blog.jianchihu.net/libvlc_new-return-null.html

    自己编译的vlc,vlc-cache-gen程序实际上在vlc/lib/vlc/vlc-cache-gen。执行下面命令即可

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./vlc/lib
    ./vlc/lib/vlc/vlc-cache-gen ./vlc/lib/vlc/plugins/
    

    然后就没有问题了

  • 相关阅读:
    如何获取地址栏中的参数
    Ajax基础知识
    什么是BFC
    111
    不定宽 块状元素居中3
    POJ 2104主席树
    可持久化数据结构之主席树
    线段树
    Splay 学习
    hello world
  • 原文地址:https://www.cnblogs.com/oloroso/p/6295205.html
Copyright © 2011-2022 走看看