我正在使用 xfreerdp 登录到我的 linux 机器(运行 RHEL7)旁边的桌面上的 Windows 机器(运行 Windos 7 64 位)。
通常我使用:
xfreerdp -k uk -g 1280x950 --no-nla --plugin cliprdr
Run Code Online (Sandbox Code Playgroud)
这使得音频被禁用。我可以使用以下命令将声音输出从 Windows 机器转发到我的 linux 机器:
xfreerdp --plugin drdynvc --plugin rdpsnd
Run Code Online (Sandbox Code Playgroud)
我无法使用 linux 麦克风设备向 Windows 框提供音频。我试过:
--plugin audin_pulse
Run Code Online (Sandbox Code Playgroud)
并设置注册表项:
HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
Run Code Online (Sandbox Code Playgroud)
fDisableAudioCapture
到 0。尽管在这里查看了类似的问题,但我不确定如何解决此问题。
然而,windows 盒子在我的桌子上,所以我很高兴能在那里使用耳机和麦克风插座。 那就是我根本不想转发音频,只是在远程机器上启用它。默认情况下,远程桌面似乎禁用它(我认为是在 Windows 端)。
在旧的 rdesktop 程序下,我能够运行-r sound:remote
或-r sound:local
执行此操作。xfreerdp 上的等价物是什么?
[背景:我的目标是在 windows box 上使用 Skype 进行业务。只要我可以让它工作,我在哪里插入耳机并不重要。我确实有 pidgin+sipe 在 linux 机器上工作,但我不确定所有功能都可以使用]
这几乎但不完全是“为什么 .so 文件可执行? ”的重复。
我注意到在基于 Red Hat 的系统上共享库具有执行权限,但在 Debian 上它们没有。
从逻辑上讲,分片库本身是不可执行的,除非它们是设计使然(通过巧妙的链接)。但是,它们包含的代码会被执行。所以它有点灰色地带。
有一个有趣的文章
链接的问题表明它出于历史原因,而且它是某些类 Unix 操作系统(如 HP-UX)的要求。
我想更深入地了解 Debian 和 Red Hat 在这里不同的原因。
哪个系统发生了变化,为什么?
BSD 上的情况如何?
是否有任何可能的安全考虑?
以下是 Red Hat 对这个主题的看法(重点是我的):
除了可以从 shell 执行之外,在库上设置可执行位不会产生任何影响。Linux 中的共享库采用一种称为 ELF 的格式,它代表 Executable and Linkable Format。这是可执行文件和共享库的格式,因此这就是库被标记为可执行位的原因。值得注意的是,GCC 创建了默认设置了可执行位的共享库。
删除可执行位没有任何副作用(除了不能运行某些库来显示它们的信息,例如 libc),因为动态加载器不关心库的权限:它而是映射库的一部分到内存的一部分,那些需要执行的被映射到先前标记为 PROT_EXEC 的内存区域。
正如所指出的那样,Debian 政策将库安装为不可执行的。我认为 gcc(或者更确切地说 ld)是平台无关的错误,通过使库默认可以执行来谨慎行事?
这里有一篇有趣的文章:https : //www.technovelty.org/linux/shared-libraries-and-execute-permissions.html
在FHS下,系统软件包(例如 RPM)将库安装到/usr/lib
(或/usr/lib64
)。同样,使用旧的“”例程编译的库configure;make;make install
(不属于系统发行版的一部分)默认安装到/usr/local/lib
(或/usr/local/lib64
)。
一般来说,要求用户更改 LD_LIBRARY_PATH 或ld.so.conf
他们安装的应用程序被认为是不好的形式。参见示例:
http://web.archive.org/web/20060719201954/http://www.visi.com/~barr/ldpath.html
但是,这条规则不应该/usr/local/lib
是一个例外吗?
如果是这种情况,为什么许多/大多数发行版默认情况下不包含/usr/local/lib
在库搜索路径中?到目前为止,似乎只有 ArchLinux 认为这是一个错误,请参阅http://bugs.archlinux.org/task/20059?project=1&opened=2263
以及相关的http://bbs.archlinux.org/viewtopic.php?id =99807
/usr/local/lib
对于需要将库包含/usr/local/lib
在其 RPATH 中的应用程序来说,还是期望操作系统已经具有该设置更正确?我不喜欢在 RPATH 中使用任何不基于 $ORIGIN 的东西。
这不是一个迂腐的问题,因为它对系统稳定性以及软件的打包方式有影响。