【发布时间】:2010-08-26 14:19:29
【问题描述】:
我需要将我的 C++ 程序与几个共享库链接起来,这些共享库会生成太多的输出到 std::cout 和 std::cerr 使它们对我的使用都毫无用处。我可以访问这些库的 C++ 源代码,但不能修改它们。
有没有办法将它们的输出重定向到不同的流或在链接到我的代码时抑制它?我更喜欢 C++ 中的一种干净的方式,但担心那是不可能的,我也会对肮脏的链接器黑客感到满意。作为最后的手段,“代理libstdc++”也可以。
我正在使用 Linux 下的 GNU 工具链(g++、libtool、ld)。
【问题讨论】:
-
这不是真正的
cerr/cout,而是STDOUT_FILENO和STDERR_FILENO的包装。除了拥有用户之外,C++ 没有什么神奇之处。 -
@Matt:我刚刚提到希望当我将 C++ 代码链接在一起时(例如覆盖符号)可以利用这一点。但也许那个语言信息在那个阶段都消失了。
-
IMO 不完全重复,但相关:stackoverflow.com/questions/533038/…
-
@sbi:我希望在链接器阶段有一个侵入性较小的解决方案。