如何解决“无法打开'raise.c'”错误?(VSCODE,LINUX)

时间:2019-12-01 15:25:00

标签: c++ opencv ubuntu video-processing vscode-debugger

(操作系统和版本:Ubuntu 18.4,VS代码版本:Vscode 1.4,C / C ++扩展版本:0.26)

您好,我已经阅读了所有有关“ raise.c”的文章,但都没有解决我的问题,我只是编写了一个简单的OpenCV代码来捕获网络摄像头的帧。每次我运行代码时,它经常显示错误。错误消息是:

  

无法打开'raise.c':无法读取文件(错误:找不到文件(/build/glibc-OTsEL5/glibc-2.27/sysdeps/unix/sysv/linux/raise.c))。

launch.json是:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++ build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "g++ build active file",
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}

和tasks.json是:

{
    "tasks": [
        {
            "type": "shell",
            "label": "g++ build active file",
            "command": "/usr/bin/g++",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}",
                "`pkg-config",
                 "--libs",
                  "--cflags", 
                  "opencv4`"

            ],
            "options": {
                "cwd": "/usr/bin"
            }
        }
    ],
    "version": "2.0.0"
}

那么我该如何解决这个问题?有什么办法解决它。我是新手程序员。

第二个问题是每次我运行此代码时,我的网络摄像头都会冻结,并且必须使用“强制相当”的底部。为什么我的网络摄像头冻结?任何想法都欢迎。谢谢。 (我正在使用ubuntu,而我的IDE是Vscode)

3 个答案:

答案 0 :(得分:1)

最后,我在工作3天后找到了解决方案。我将为下一代编写解决方案。没有必要在互联网上搜索,您什么都找不到:D 好的,如果您想解决问题,则需要再次重新安装OpenCV并关闭所有标志。这是一个错误。 我使用的标志是:

  

cmake -D BUILD_TIFF = ON -D WITH_CUDA = OFF -D ENABLE_AVX = OFF -D   WITH_OPENGL =打开-D WITH_OPENCL =关闭-D WITH_IPP =关闭-D WITH_TBB =打开-D   BUILD_TBB = ON -D WITH_EIGEN = OFF -D WITH_V4L = OFF -D WITH_VTK = OFF -D   BUILD_TESTS = OFF -D BUILD_PERF_TESTS = OFF -D CMAKE_BUILD_TYPE = RELEASE -D   CMAKE_INSTALL_PREFIX = / usr / local -D   OPENCV_EXTRA_MODULES_PATH =。/ .. / opencv_contrib / modules ..

使用正确的路径填充OPENCV_EXTRA_MODULES_PATH和CMAKE_INSTALL_PREFIX = / usr / local! 就这样, 祝你好运。

答案 1 :(得分:1)

如果您不想每次都看到有关丢失文件的提示,您可以创建该目录并在那里放置一个空文件(根据我目前在此处看到的路径调整):

sudo mkdir -p  /build/glibc-eX1tMB/glibc-2.31/sysdeps/unix/sysv/linux/
sudo touch /build/glibc-eX1tMB/glibc-2.31/sysdeps/unix/sysv/linux/raise.c

如果你想在调试时看到一些源代码,你可以把你正在使用的 glibc 版本的文件放在那里。在在线存储库中找到与错误路径中的版本对应的标签并从那里获取。你的版本是 glibc-2.27,我的是 glibc-2.31。我的在这里:https://github.com/bminor/glibc/blob/glibc-2.31/sysdeps/unix/sysv/linux/raise.c 所以我可以按如下方式抓取它:

pushd ~/temp
wget https://raw.githubusercontent.com/bminor/glibc/glibc-2.31/sysdeps/unix/sysv/linux/raise.c
sudo cp -a raise.c /build/glibc-eX1tMB/glibc-2.31/sysdeps/unix/sysv/linux/

可能有一种方法可以告诉 VSCode / gdb 从其他路径找到它,而不会弄乱您的根文件系统。请任何知道如何操作的人进行编辑。

答案 2 :(得分:0)

使用gdb调试器时可能会发生此错误。在这种情况下,您需要在编译命令中包含“ -g”标志。 (这解决了将我带到这里的错误)

您的编译命令可能类似于以下内容:

g++ -Wall -Werror -std=c++14 -g -O -o <executable> <fileName>

还要注意在launch.json中对我有用的程序路径:

"program": "${workspaceFolder}/<executable>"