[英]How can I solve "Unable to open 'raise.c' " Error?(VSCODE , LINUX)
(操作系統和版本: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"
}
那么我該如何解決這個問題呢? 有什么辦法可以解決。 我是初學者程序員。
第二個問題是每次我運行這段代碼時,我的網絡攝像頭都會凍結,我必須使用“force quite”底部。 為什么我的網絡攝像頭凍結? 歡迎任何想法。 謝謝。 (我使用的是 ubuntu,我的 IDE 是 Vscode)
經過3天的工作,我終於找到了解決方案。 我正在為下一代編寫解決方案。 沒有必要在互聯網上搜索你找不到任何東西:D
好吧,如果你想解決這個問題,你需要再次重新安裝 OpenCV 並關閉所有標志。 這是一個錯誤。 我使用的標志是:
cmake -D BUILD_TIFF=ON -D WITH_CUDA=OFF -D ENABLE_AVX=OFF -D
WITH_OPENGL=ON -D WITH_OPENCL=OFF -D WITH_IPP=OFF -D WITH_TBB=ON -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
!
就這樣,祝你好運。
使用 gdb 調試器時可能會發生此錯誤。 在這種情況下,您需要在編譯命令中包含“-g”標志。 (這解決了把我帶到這里的錯誤)
您的編譯命令可能類似於以下內容:
g++ -Wall -Werror -std=c++14 -g -O -o <executable> <fileName>
還要注意在 launch.json 中適合我的程序路徑:
"program": "${workspaceFolder}/<executable>"
如果您只是不想每次都看到有關丟失文件的提示,您可以創建該目錄並在其中放置一個空文件(路徑已根據我目前在此處看到的內容進行了調整):
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 從其他路徑找到它,而不會弄亂您的根文件系統。 請任何人編輯,如果他們知道該怎么做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.