linux - 无法在 SOCAT 中配置 TERMIOS,xioinitialize : Assertion

标签 linux assert powerpc termios socat

我在 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/

相关文章:

linux - 在 Perl 中连接变量

linux - 如何在 bash 中同时运行多个 ssh 命令?

c++ - 什么时候断言变得多余?

c# - Debug.Assert 与代码契约(Contract)用法

c - 在 PPC 上的 Montavista 上用 C 语言生成 float

c - 如何在RAM上定义const变量?

c++ - 如何将 SFML 游戏服务器部署到 Linux 服务器?

linux - 如何在 Bash 脚本中将字符串作为参数传递给 AWK

javascript - 如何在 Cypress 中使用逻辑 OR 应该断言

c - 使用 PPC 程序集引用其他文件中的符号