【问题标题】:program exited with code 132程序以代码 132 退出
【发布时间】:2014-07-29 01:20:17
【问题描述】:

我正在使用 raspbian、opencv-2.4.8 和 geany,这是我的简单/第一个代码

#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
using namespace std;
using namespace cv;
int main ()
{
    Mat image=imread("/home/pi/Desktop/pic3.png");
    if (! image.data)
    {
        cout<<"error"<<endl;
    }
    else
    {
        namedWindow("display",WINDOW_AUTOSIZE)
        imshow("display",image);
        waitKey(0);
        return 0;
    }
}    

这些是 geany->project->properties->build 中的编译和构建命令

g++ $(pkg-config --cflags opencv-2.4.8) -c "f'
g++ $(pkg-config --clfags --libs opencv-2.4.8) -o "e" "f'

它可以完美地编译和构建,但是当我执行它时,这是我的输出

非法指令


(程序退出,代码:132)

我在互联网上搜索了这个退出代码,但找不到一个线程或关于它的问题

【问题讨论】:

  • 如果您将所有警告都放在上面,您应该会看到,您的错误路径缺少 return 语句。
  • 我添加了 -Wall( 用于编译和构建) 以启用警告但结果仍然相同

标签: c++ opencv raspberry-pi raspbian


【解决方案1】:

132 = 128 + 4

人退出:

>128   A command was interrupted by a signal.

man -s 7 信号

SIGILL        4       Core    Illegal Instruction

稍后

-I/usr/local/include -I/usrlocal/include/opencv 对仅编译 (-c) 调用有意义(但对于链接可执行文件的第二个 g++ 调用无效)。但是库不是由它们的完整路径指定的。您通常做的是为每个目录指定一个-L/usr/local/lib(或类似名称),并为这些目录中的每个库指定一个-lopencv_calib3d(或类似名称)(省略lib.so。)

【讨论】:

  • 我对 raspbian 完全陌生,即使我使用 opencv 的示例代码,我也无法弄清楚为什么会生成此错误,同样的错误出现任何建议如何查找/调试此错误
  • 我在执行命令中添加了 sudo,现在非法指令消失了,但仍然让程序退出并显示代码 132
  • 你为构建提供的命令对我来说看起来很奇怪。例如:"f'-c 开关请求“仅编译”,因此应该有一个 .o 文件,但这不会在下一个命令中使用。所以,我猜"e"(为什么是引号?)是可执行文件e,由第二个命令编译和链接。 - 需要知道$(pkg-config...)返回什么;库名称应该放在编译/链接命令的末尾。
  • geany "f' 编译打开的文件,"e" 创建同名的 .o 文件
  • pkg-config 返回 '-I/usr/local/include -I/usrlocal/include/opencv /usr/local/lib/libopencv_calib3d.so' 等等所有 .so 文件 @laune
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-03
相关资源
最近更新 更多