我正在使用 caffe 库制作自己的 c++ 分类程序。我想在 caffe 的模型初始化步骤中隐藏所有日志消息。
根据Disable glog's "LOG(INFO)" logging,我可以通过设置环境变量来禁用大部分日志
GLOG_minloglevel=2
从命令行。
但是,我真正想要的是从可执行文件本身中删除所有日志,因此用户无法通过重置 GLOG_minloglevel 值来打开日志。
我可以从http://rpg.ifi.uzh.ch/docs/glog.html找到一种方法在编译时删除 glog 的日志消息。它说我可以删除这样的日志:
> #define GOOGLE_STRIP_LOG 1 // this must go before the #include!
> #include <glog/logging.h>
add_definitions(-DGOOGLE_STRIP_LOG=2)
由于我的应用程序使用 caffe 的 c++ 库,我需要通过在 caffe 的 CMakeLists.txt中添加以下选项来重建 caffe 库。编译成功,但是当我使用新的 caffe 库运行我的应用程序时,它在模型初始化步骤期间因分段错误错误而停止。通过像这样运行 gdb,我可以获得更详细的错误消息:
程序收到信号 SIGSEGV,分段错误。__memcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S:153 153 ../sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: 没有这样的文件或目录
add_definitions(-DGOOGLE_STRIP_LOG=2)
当我在没有caffe 的 CMakeLists.txt 的情况下回滚到原始 caffe 库时,我的应用程序运行良好。
谁能给我一个解决这个问题的提示?
先感谢您。