VSCode C ошибка компиляции из collect2 * только * при запуске как задача - PullRequest
0 голосов
/ 28 мая 2020

Проблема

C здесь новичок, путающийся с задачей компиляции VSCode.

Я компилирую очень простую C программу, давайте позвоним это my_program.c:

#include <stdio.h>

int main( int argc, char *argv[] )  {
    if(argc == 2) {
        printf("The argument supplied is %s\n", argv[1]);
    }
    else if(argc > 2) {
        printf("Too many arguments supplied");
    }
    else {
        printf("One argument is expected");
    }
}

Я могу скомпилировать и запустить my_progam.c из командной строки с помощью:

gcc -g /path/to/my_program.c -o /path/to/my_program

Однако, когда я пытаюсь скомпилировать это непосредственно из vscode, используя задача сборки, я получаю сообщение об ошибке:

> Executing task: /usr/bin/gcc -g /path/to/my_program.c -o /path/to/my_program <

collect2: fatal error: cannot find ‘ld’
compilation terminated.
The terminal process terminated with exit code: 1

Я даже не уверен, как начать отлаживать это ... Любая помощь приветствуется!

задач. json

По умолчанию создается vscode:

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "shell: gcc build active file",
            "command": "/usr/bin/gcc",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "/usr/bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

Environment

code --version

1.45.1
5763d909d5f12fe19f215cbfdd29a91c0fa9208a
x64
gcc -v

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/10.1.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++,d --with-isl --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-install-libiberty --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-libunwind-exceptions --disable-werror gdc_include_dir=/usr/include/dlang/gdc
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 10.1.0 (GCC)

ld is установлено:

ld --version

GNU ld (GNU Binutils) 2.34.0
...