- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 a gem不会在 Ubuntu 上编译,因为出现的是编译器强化设置。
如果我克隆 gem 的 repo 并修改 Makefile 以添加 -Wno-format-security
的 CPPFLAG,那么它编译得很好。
我的问题是,当我尝试使用 gem install ztx-0.0.1.gem
安装该 gem 时,它会尝试再次编译该 gem,但不知何故忽略了 Makefile 指定的 CPP 标志。 (我假设发生这种情况是因为我得到了与添加 -Wno-format-security
标志之前相同的错误)。
我尝试在调用 gem install...
之前导出 CPPFLAGS,但结果相同。
所以,我的问题是,我如何才能强制使用这些 CPP 标志,以便我可以编译该 gem?
最佳答案
我找到了我的问题的解决方案,尽管该解决方案并不是这个问题的直接答案。
我想禁用由 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
重新生成包装器。
我就是这样做的,并且使用新生成的文件,gem 编译没有问题。
关于c++ - 如何在 Ubuntu 中编译一个没有编译器强化的 gem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48754247/
我是一名优秀的程序员,十分优秀!