【问题标题】:GCC Output file errorGCC 输出文件错误
【发布时间】:2018-08-06 13:47:44
【问题描述】:

我正在使用带有 ubuntu 16.04 LTS 的 Visual Studio 代码,使用 gcc 5.5 版进行编译。每当我尝试使用 ctrl+shift+b 在 Visual Studio 代码中构建程序时,都会收到屏幕截图中显示的错误,我能找到的唯一参考是在 tasks.json 文件中,但我也会包含 c_cpp_properties 文件如果有帮助,简单地说,我不确定是什么导致输出文件说没有这样的文件或目录,我认为它应该创建输出文件还是我必须提前做?它还引用了我的文件系统上似乎不存在的 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
        }
    }
]
}

【问题讨论】:

  • 尝试手动创建输出目录“build”。
  • 那行得通,但我将第一个回答的人标记为正确,因为他们也向我解释了更多,不过感谢您的贡献:)

标签: c++ gcc visual-studio-code g++ ubuntu-16.04


【解决方案1】:

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

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

【讨论】:

  • 工作空间是实际代码所在的 src 目录,还是在 c_cpp_properties.json 和 tasks.json 所在的 .vscode 中?只是想超级清楚,所以我也知道未来,谢谢。抱歉,一秒钟都没有搞定。
  • calibration.out 是可执行文件的名称。 build 是目录的名称。它写在你的json文件"-o", "build/calibration.out",中。工作区文件夹是vscode在你的项目中使用的根目录。
【解决方案2】:

通过直接调用 gcc 来构建文件仅适用于单个文件,但您会遇到类似这样的问题。

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

  • Make - Linux 上的主要标准构建系统,但难以学习和繁琐
  • CMake - Visual Studio 代码对 cmake 有一些支持
  • Gyp - 可以生成 make 文件
  • Scons - 类似于 python 的构建脚本

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

【讨论】:

    猜你喜欢
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多