我在 Linux 机器上使用 Yocto 的 SOCAT 1.7.2.4 和 PowerPC 作为目标 (Big Endian)。无法启动 SOCAT,因为我收到以下断言
xioinitialize.c:45: xioinitialize: Assertion `3 << opt_crdly.arg3 == 00030000' failed.
我注释掉了 xioinitialize.c 中的断言,我得到了下面的断言
xioinitialize.c:45: xioinitialize: Assertion `3 << opt_tabdly.arg3 == 00006000' failed.
当我绕过这个断言时,迎接我的是下一个
xioinitialize.c:45: xioinitialize: Assertion `3 << opt_csize.arg3 == 00001400' failed.
如果我跳过所有这些,我可以很好地运行 SOCAT。我如何摆脱这些断言?我在 x86/Ubuntu 目标上运行 SOCAT,但没有看到这些断言。如果我在 PowerPC 目标上禁用 termios,我可以运行 SOCAT(但我需要 termios 支持)。当我在线搜索时,我看到这个 https://dev.openwrt.org/ticket/5210提到此问题的帖子已在 5 年前修复。
最佳答案
好吧,您提到的链接指向另一个 link ,其中指出:
This does ONLY happen in a cross compiling environment, otherwise the configure script guesses them right.
你确定你正确地编译了 SOCAT 吗?我会设置一台 debian 机器,并使用 SOCAT package直接。
如果你想快速测试二进制文件,你也可以这样做:
$ cd /tmp
$ wget http://ftp.us.debian.org/debian/pool/main/s/socat/socat_1.7.2.4-2_powerpc.deb
$ ar x socat_1.7.2.4-2_powerpc.deb
$ tar xf data.tar.xz
$ ./usr/bin/socat
你需要确保你有正确的依赖关系,例如。 libssl1.0.0 (>= 1.0.0) 和 libwrap0 (>= 7.6)。要仔细检查,只需检查以下输出:
$ ldd ./usr/bin/socat
关于linux - 无法在 SOCAT 中配置 TERMIOS,xioinitialize : Assertion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37120685/