C++ GCC输出文件错误

C++ GCC输出文件错误,c++,gcc,visual-studio-code,g++,ubuntu-16.04,C++,Gcc,Visual Studio Code,G++,Ubuntu 16.04,我正在使用VisualStudio代码和ubuntu 16.04 LTS,并使用gcc版本5.5进行编译。每当我尝试使用ctrl+shift+b在visual studio代码中构建程序时,我都会得到屏幕截图中显示的错误,我能找到的唯一参考是tasks.json文件,但我也会包括c_cpp_属性文件,以防有帮助,简单地说,我不确定是什么原因导致输出文件说没有这样的文件或目录,我以为它应该创建输出文件,还是我必须提前创建?它还引用了一个usr/bin/ld目录,这个目录在我的文件系统中似乎不存在,

我正在使用VisualStudio代码和ubuntu 16.04 LTS,并使用gcc版本5.5进行编译。每当我尝试使用ctrl+shift+b在visual studio代码中构建程序时,我都会得到屏幕截图中显示的错误,我能找到的唯一参考是tasks.json文件,但我也会包括c_cpp_属性文件,以防有帮助,简单地说,我不确定是什么原因导致输出文件说没有这样的文件或目录,我以为它应该创建输出文件,还是我必须提前创建?它还引用了一个usr/bin/ld目录,这个目录在我的文件系统中似乎不存在,这很奇怪。任何和所有的帮助都将不胜感激,如果需要更多的信息,请随时询问

c_cpp_properties.json:

{
"configurations": [
    {
        "name": "Linux",
        "includePath": [
            "${workspaceFolder}/**",
            "opt/opencv/release/include",
            "/home/linuxbrew/.linuxbrew/Cellar/nlohmann_json/3.1.2/include"
        ],
        "defines": [],
        "compilerPath": "/usr/bin/gcc",
        "cStandard": "c11",
        "cppStandard": "c++17",
        "intelliSenseMode": "clang-x64"
    }
],
"version": 4
}
tasks.json:

{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
    {
        "label": "build app",
        "type": "shell",
        "command": "g++",
        "args": [
            "-g", "src/calibration.cpp",
            "-o", "build/calibration.out",
            "-I/home/linuxbrew/.linuxbrew/Cellar/nlohmann_json/3.1.2/include",
            "-std=c++11",
            "-L/usr/local/Cellar/opencv/3.4.1_5/lib",
            "-lopencv_stitching",
            "-lopencv_superres",
            "-lopencv_videostab",
            "-lopencv_aruco",
            "-lopencv_bgsegm",
            "-lopencv_bioinspired",
            "-lopencv_ccalib",
            "-lopencv_dnn_objdetect",
            "-lopencv_dpm",
            "-lopencv_face",
            "-lopencv_photo",
            "-lopencv_fuzzy",
            "-lopencv_hfs",
            "-lopencv_img_hash",
            "-lopencv_line_descriptor",
            "-lopencv_optflow",
            "-lopencv_reg",
            "-lopencv_rgbd",
            "-lopencv_saliency",
            "-lopencv_stereo",
            "-lopencv_structured_light",
            "-lopencv_phase_unwrapping",
            "-lopencv_surface_matching",
            "-lopencv_tracking",
            "-lopencv_datasets",
            "-lopencv_dnn",
            "-lopencv_plot",
            "-lopencv_xfeatures2d",
            "-lopencv_shape",
            "-lopencv_video",
            "-lopencv_ml",
            "-lopencv_ximgproc",
            "-lopencv_calib3d",
            "-lopencv_features2d",
            "-lopencv_highgui",
            "-lopencv_videoio",
            "-lopencv_flann",
            "-lopencv_xobjdetect",
            "-lopencv_imgcodecs",
            "-lopencv_objdetect",
            "-lopencv_xphoto",
            "-lopencv_imgproc",
            "-lopencv_core"
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        }
    }
]
}

/usr/bin/ld
是gcc链接器。从您显示的错误来看,问题不是
/usr/bin/ld
不存在,而是您要在其中创建可执行文件
校准.out
的目录
build
不存在


转到您的工作区目录,运行
mkdir build
或使用GUI创建文件夹。

/usr/bin/ld
是gcc链接器。从您显示的错误来看,问题不是
/usr/bin/ld
不存在,而是您要在其中创建可执行文件
校准.out
的目录
build
不存在


转到您的工作区目录,运行
mkdir build
或使用GUI创建文件夹。

通过直接调用gcc构建文件对于单个文件几乎是可行的,但您将遇到类似这样的问题

我建议您研究一个合适的构建系统,有很多可供选择,包括:

  • Make-Linux上的主要标准构建系统,但很难学习和掌握
  • CMake-visual studio代码对CMake有一些支持
  • Gyp-可以生成make文件
  • Scons-类似python的构建脚本

您遇到的问题是,没有任何东西正在创建
build
目录。在运行构建任务之前,您需要自己创建它。

通过直接调用gcc构建文件对于单个文件来说几乎是可行的,但是您会遇到类似这样的问题

我建议您研究一个合适的构建系统,有很多可供选择,包括:

  • Make-Linux上的主要标准构建系统,但很难学习和掌握
  • CMake-visual studio代码对CMake有一些支持
  • Gyp-可以生成make文件
  • Scons-类似python的构建脚本

您遇到的问题是,没有任何东西正在创建
build
目录。在运行构建任务之前,您需要自己创建它。

尝试手动创建输出目录“build”。这很有效,但我将第一个回答的人标记为正确,因为他们也向我解释了一点,感谢您的贡献:)尝试手动创建输出目录“build”。这很有效,但是我将第一个回答的人标记为正确,因为他们也向我解释了一点,谢谢你的贡献:)工作空间是实际代码所在的src目录,还是c_cpp_properties.json和tasks.json所在的.vscode目录?我只是想说得非常清楚,这样我也知道将来会怎样,谢谢。很抱歉,一秒钟都没有拿到它。
calibration.out
是可执行文件的名称
build
是目录的名称。它写在json文件
“-o”、“build/calibration.out”
中。workspace文件夹是vscode在项目中使用的根目录。工作空间是实际代码所在的src目录,还是位于.vscode中的c_cpp_properties.json和tasks.json所在的位置?我只是想说得非常清楚,这样我也知道将来会怎样,谢谢。很抱歉,一秒钟都没有拿到它。
calibration.out
是可执行文件的名称
build
是目录的名称。它写在json文件
“-o”、“build/calibration.out”
中。workspace文件夹是vscode在项目中使用的根目录。