我怎样才能抑制 g++与 C++ 链接时 OCaml 编译中的弃用警告;图书馆?
当编译 OCaml 项目时,使用 GCC >= 4.4 的 ocamlc
的 -cc g++
参数链接到需要 C++ 标准库的库(例如 LLVM 的 OCaml 绑定),会生成极其形式的详细警告喷涌:
warning: deprecated conversion from string constant to ‘char*’
如何删除这些警告?
When compiling an OCaml project which links against libraries requiring the C++ standard library (e.g. LLVM's OCaml bindings) using the -cc g++
argument to ocamlc
with GCC >= 4.4 generates extremely verbose warning spew of the form:
warning: deprecated conversion from string constant to ‘char*’
How is it possible to remove these warnings?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
该问题源于
ocamlc
生成中间 C 代码,当较新版本的 GCC 以 C++ 模式编译时,该代码会触发警告。但生成的代码不需要编译为 C++。对于针对包装的 C++ 库进行构建的常见情况,传递-cc g++
的唯一原因是确保构建 C++ 标准库依赖项。更简单的解决方案可以避免使用 C++ 前端来编译 ocamlc 中间代码,方法很简单:强制将生成的 C 代码与 libstdc++ 链接,同时仍然编译它在纯 C 模式下。
The problem stems from
ocamlc
generating intermediate C code which triggers warnings when compiled in C++ mode by newer versions of GCC. But this generated code need not be compiled as C++. The only reason to pass-cc g++
for this common case of building against a wrapped C++ library is to ensure that the C++ standard library dependencies are built. The simpler solution, which avoids using the C++ front-end for compiling theocamlc
intermediate code, is simply:which forces linking the generated C code with
libstdc++
, while still compiling it in plain C mode.我认为你可以
在 C++ 中这样做来抑制这种情况。
I think you can just do
In the C++ to suppress this.