如何在Ubuntu中不加编译器硬化的情况下编译宝石
how to compile a gem without compiler hardening in Ubuntu?
我正在使用一个宝石,因为出现的是编译器硬化设置,因此在Ubuntu上不会编译。
如果我克隆了宝石的存储库并修改makefile以添加 -Wno-format-security
的cppflag,则可以很好地编译。
我的问题是,当我尝试使用gem install ztx-0.0.1.gem
安装该宝石时,它试图再次编译GEM,但却以某种方式忽略了Makefile指定的CPP标志。(我认为这正在发生,因为在添加-Wno-format-security
标志之前,我会遇到与我遇到的相同错误(。
我在调用gem install...
之前尝试导出cppflags,但结果相同。
所以,我的问题是,我如何强制这些CPP标志,以便我可以编译该宝石?
我找到了解决问题的解决方案,尽管该解决方案不是对此问题的直接答案。
我想禁用由Ubuntu中编译器硬化设置引起的编译器错误。正如@Jesper在评论中指出的那样,这可能不是一个明智的想法。
,但我想知道为什么它不起作用。它在MacOS上汇总了。然后我注意到大多数错误都在一个名为tx_swig_wrap.cxx
的文件中。
我对Swig一无所知,但是我有点新的,它允许从Ruby,Python等调用一些C/C 代码。
那时,我意识到该包装文件可能是由Swig生成的,并且我遇到的错误可能是由较新的Swig版本解决的。
包装器文件在顶部有一个评论部分,可以告诉您创建它的SWIG版本。是1.x,最新的swig是v3.x。
我安装了swig,我了解到可以通过执行swig -c++ -ruby tx_swig.i
再生包装器。
我只是这样做的,使用了新生成的文件,毫无问题地编译了宝石。
- 在我的 CLR 项目中添加包含会导致无法在启用 /clr 的情况下编译 WLR
- 如何在没有Cygwin或Visual Studio的情况下编译Magick++?
- 如何在不制作Visual Studio 2017项目的情况下编译C++文件?
- 为什么 GCC 6.3 在没有显式 C++11 支持的情况下编译此大括号初始化列表代码
- 在没有 -g 选项的情况下编译,但我想获得更详细的调试信息
- 在没有 AVX 的情况下编译提升
- 如何在Ubuntu中不加编译器硬化的情况下编译宝石
- 即使我传递了无效的类型参数,我为什么还能在没有错误的情况下编译此代码
- 当我尝试在启用推理引擎的情况下编译 OpenCv 时,出现错误
- 为什么 C 可以在没有库的情况下编译 time()?
- GLSL 无法在没有插值的情况下编译着色器(平面)
- 在不安装 Visual Studio 的情况下编译 Visual Studio 项目
- 在没有-DNDEBUG和-O3的情况下编译时,标准库实现不使用断言有什么原因吗
- 在不使用CRT的情况下编译C++
- 在没有ros的情况下编译roscpp(使用g++)
- 为什么"A<0>=0"中的模板 id 由于大于或等于运算符">="而无法在没有空格的情况下编译?
- 为什么 rand() 在不包含 cstdlib 或使用命名空间 std 的情况下编译
- 在没有Main的情况下编译C程序
- OpenCV:不支持GPU(该库是在不支持CUDA的情况下编译的)
- 为什么VS2008在没有警告的情况下编译时使用了错误的模板逻辑