导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页
    1. 主页
    2. qianchenzhumeng
    Q
    • 资料
    • 关注 0
    • 粉丝 0
    • 我的积分 436
    • 主题 0
    • 帖子 10
    • 最佳 0
    • 群组 0

    qianchenzhumengLV 3

    @qianchenzhumeng

    436
    积分
    0
    声望
    6
    资料浏览
    10
    帖子
    0
    粉丝
    0
    关注
    注册时间 最后登录

    qianchenzhumeng 取消关注 关注

    qianchenzhumeng 发布的最新帖子

    • 回复: 在menuconfig页面上启用luci后编译失败

      另外的,我的开发板是芒果派 MQ-R F133。

      发布在 编译和烧写问题专区
      Q
      qianchenzhumeng
    • 回复: 在menuconfig页面上启用luci后编译失败

      @xiaowen 我还遇到了 luci 无法和 ubus 建立连接的问题,不过已经解决掉了,原因是 sdk 里面,默认的启动进程是 init,需要替换成 procd,ubusd 才能正常工作,luci 才能和 ubus 通信。否则网页上就会报如下错误:

      /usr/lib/lua/luci/dispatcher.lua:460: Failed to execute function dispatcher target for entry '/'.
      The called action terminated with an exception:
      /usr/lib/lua/luci/util.lua:610: Unable to establish ubus connection
      stack traceback:
      	[C]: in function 'assert'
      	/usr/lib/lua/luci/dispatcher.lua:460: in function 'dispatch'
      	/usr/lib/lua/luci/dispatcher.lua:141: in function </usr/lib/lua/luci/dispatcher.lua:140>
      

      走了好多弯路。
      最开始是想让 usbd 跑起来,但是手动启动会报错:

      usbd &
      usock: no such file or directory
      

      看了 ubus 的源码,尝试在 /var 下创建 run 目录后,再手动启动 usbd 能够成功:

      mkdir /var/run
      ubusd &
      

      但是 luci 会报另外的错误:

      Status: 500 Internal Server Error
      /usr/lib/lua/luci/dispatcher.lua:460: Failed to execute function dispatcher target for entry '/'.
      The called action terminated with an exception:
      /usr/lib/lua/luci/template.lua:97: Failed to execute template 'sysauth'.
      A runtime error occured: /usr/lib/lua/luci/template.lua:97: Failed to execute template 'header'.
      A runtime error occured: /usr/lib/lua/luci/template.lua:97: Failed to execute template 'themes/bootstrap/header'.
      A runtime error occured: [string "/usr/lib/lua/luci/view/themes/bootstrap/hea..."]:150: attempt to index local 'boardinfo' (a nil value)
      stack traceback:
      	[C]: in function 'assert'
      	/usr/lib/lua/luci/dispatcher.lua:460: in function 'dispatch'
      	/usr/lib/lua/luci/dispatcher.lua:141: in function </usr/lib/lua/luci/dispatcher.lua:140>
      

      监听 ubus 发现,luci 从 ubus 查询一些信息的时候,ubus 返回找不到:

      ubus monitor
      -> b40158cc #b40158cc          hello: {}
      <- b40158cc #00000000         lookup: {"objpath":"session"}
      -> b40158cc #00000000         status: {"status":4}
      <- b40158cc #00000000         lookup: {"objpath":"system"}
      -> b40158cc #00000000         status: {"status":4}
      

      之后找到一篇分析 openwrt 启动顺序的文章:《OpenWrt 启动顺序》,里面提到 procd 启动的时候要连接 ubus,于是按这个帖子把启动进程换成了 procd:《Tina procd-init 与 busybox-init 切换》,之后就好了,luci 可以用了。

      发布在 编译和烧写问题专区
      Q
      qianchenzhumeng
    • 回复: tina_sdk 如何使用mosquitto进行mqtt通信?

      @qianchenzhumeng 在 tina_sdk 如何使用mosquitto进行mqtt通信? 中说:

      未定义的那些符号应该是旧版 openssl 的接口。在 Tina-Linux 的 menuconfig 中使能 openssl 编译,并启用兼容过时接口选项,设置兼容至 1.0.0 版本(依据是 openssl-1.1.0i/Configure 中的 $apitable,版本号必须是 $apitable 中有的,否则编译不过)。这样做之后,应该就可以找到了。

      libopenssl.png

      发布在 MR Series
      Q
      qianchenzhumeng
    • 回复: tina_sdk 如何使用mosquitto进行mqtt通信?

      未定义的那些符号应该是旧版 openssl 的接口。在 Tina-Linux 的 menuconfig 中使能 openssl 编译,并启用兼容过时接口选项,设置兼容至 1.0.0 版本(依据是 openssl-1.1.0i/Configure 中的 $apitable,版本号必须是 $apitable 中有的,否则编译不过)。这样做之后,应该就可以找到了。

      发布在 MR Series
      Q
      qianchenzhumeng
    • 回复: t113(tina)加入paha.mqtt.c库,编译成固件烧录到板子上后报错找不到动态库

      两种方法:

      • 链接的时候静态连接。
      • 把库打到镜像里面:pack 前把库放到 rootfs/lib 里面去(lunch 后输入 crootfs 命令可以进入 rootfs 目录),然后再 pack。
      发布在 MR Series
      Q
      qianchenzhumeng
    • 回复: 在menuconfig页面上启用luci后编译失败

      @xiaowen 请问有遇到 luci 报错的问题吗?如何解决的呢?

      发布在 编译和烧写问题专区
      Q
      qianchenzhumeng
    • 回复: 编译应用程序报错arm-openwrt-linux-muslgnueabi/bin/ld: cannot find -lanl

      为 musl 编译的时候,把 CMakeLists.txt 中的 anl 删掉即可:https://github.com/qianchenzhumeng/iot_gw#1-找不到-libanl

      发布在 V Series
      Q
      qianchenzhumeng
    • 回复: WSL1 Ubuntu-16.04下编译成功,pack时提示dragon无法运行

      wsl1 不支持运行 32 位的二进制文件,升级成 wsl2 就可以了。

      # 查看名称和版本号
      wsl -l -v
      

      比如:

        NAME            STATE           VERSION
      * Ubuntu          Running         1
        Ubuntu-18.04    Stopped         2
      

      设置版本:

      wsl --set-version Ubuntu 2
      

      等个几分钟就可以了。

      发布在 编译和烧写问题专区
      Q
      qianchenzhumeng
    • 回复: 在menuconfig页面上启用luci后编译失败

      编 rpcd 可能还会在链接时遇到 crypt 函数未定义的错误,需要增加链接标志,链接 crypt 库:rpcd: Explicitly link with lcrypt

      发布在 编译和烧写问题专区
      Q
      qianchenzhumeng
    • 回复: 在menuconfig页面上启用luci后编译失败

      我编 f133 版本的时候也遇到这个问题了,怀疑是工具链的问题,认为 uint16_t 的 port->port_min 和 port->port_max 的最大值是 2147483647。

      比较快的方法是修改一下源码,找到 firewall-2016-01-29 文件夹下所有包含 65535 字符串的行,把 65535 修改成 2147483647 就可以了,其实就是把 buf 改大一点。
      应该也可以把告警转错误的编译选项 Werror 去掉,不过我还没找到地方。

      grep "65535" ./out/f133-mq_r/compile_dir/target/firewall-2016-01-29/ -nr
      

      修改后是这样的:

      grep "2147483647" ./out/f133-mq_r/compile_dir/target/firewall-2016-01-29/ -nr
      ./out/f133-mq_r/compile_dir/target/firewall-2016-01-29/iptables.c:835:  char buf[sizeof("2147483647:2147483647\0")];
      ./out/f133-mq_r/compile_dir/target/firewall-2016-01-29/redirects.c:348: char buf[sizeof("2147483647-2147483647\0")];
      ./out/f133-mq_r/compile_dir/target/firewall-2016-01-29/redirects.c:367: char buf[sizeof("255.255.255.255:2147483647-2147483647\0")];
      ./out/f133-mq_r/compile_dir/target/firewall-2016-01-29/utils.c:570:     char buf[sizeof("2147483647-2147483647\0")];
      ./out/f133-mq_r/compile_dir/target/firewall-2016-01-29/snats.c:275:     char buf[sizeof("255.255.255.255:2147483647-2147483647\0")];
      

      就可以编过了。

      我也是想用 luci 才遇到这个问题的,但是不光是这个问题,即便编译过了,烧录启动后,浏览器访问时,lua 会提示连接 ubus 有问题,顺着这个下去,发现 ubusd 也无法运行。

      路好像还很长。

      发布在 编译和烧写问题专区
      Q
      qianchenzhumeng