Невозможно скомпилировать простую программу c в Linux Mint 15

Я пользователь Linux Mint 15.
Я хотел написать простую программу на C.
Ниже приведен мой код (hw.c)

#include<stdio.h>
#include<conio.h>
int main()
{
    printf("Hello World");
}

Но когда я пытаюсь скомпилировать его с помощью gcc

gcc -o hw hw.c

это дает мне ошибку

hw.c:1:18: fatal error: stdio.h: No such file or directory
compilation terminated.

Я погуглил и нашел несколько решений, в которых говорится об установке build-essential
, и попытался установить его.

sudo apt-get install build-essintial

но опять выдает ошибку. Ошибка

    Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 build-essential : Depends: libc6-dev but it is not going to be installed or
                            libc-dev
                   Depends: g++ (>= 4:4.4.3) but it is not going to be installed
                   Depends: dpkg-dev (>= 1.13.5) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Так что же не так? В чем проблема?
Как ее решить?

PS. Результат locate stdio.h

/usr/lib/perl/5.14.2/CORE/nostdio.h
/usr/lib/syslinux/com32/include/stdio.h

person namco    schedule 21.10.2013    source источник
comment
Попробуйте sudo aptitude update, затем sudo aptitude upgrade, затем sudo aptitude install libc-dev g++ build-essential. Обратите внимание, что <conio.h> — это специальный заголовок Windows, который не закрывается в Linux. И скомпилировать как gcc -Wall -g hw.c -o hw   -  person Basile Starynkevitch    schedule 21.10.2013
comment
conio.h не является стандартным .h файлом в стандартной библиотеке. Это не определено в POSIX   -  person yakiang    schedule 21.10.2013
comment
в порядке. Я пытался выполнить sudo aptitude install libc-dev g++ build-essential. Но он сказал: никакие пакеты не будут установлены, обновлены или удалены. 0 обновленных пакетов, 0 новых установленных, 0 для удаления и 0 не обновленных. Нужно получить 0 Б архивов. После распаковки будет использоваться 0 B. Но проблему не решил....   -  person namco    schedule 21.10.2013
comment
Ваша проблема связана с системным администратором. Вы запускали aptitude update и upgrade. Сначала восстановите систему.   -  person Basile Starynkevitch    schedule 21.10.2013
comment
Да, конечно, я обновил и обновил aptitude   -  person namco    schedule 21.10.2013
comment
Вы можете установить какой-либо новый пакет?   -  person Basile Starynkevitch    schedule 21.10.2013


Ответы (5)


У меня была такая же проблема, и я просто установил пакет g++, и это исправило отсутствующий включаемый файл.

sudo apt-get install g++

person david    schedule 12.11.2013
comment
Голосую за это, но, вероятно, это делает пакет libc6-dev. - person MikeHoss; 24.03.2014
comment
Была эта проблема с Mint 18.1, когда я собирал с Ceedling (Unity), не мог найти setjmp.h. Добавление G++ исправило это, но я согласен, что все, что мне было нужно, это пакет dev. - person bd2357; 24.06.2017

У меня была такая ситуация раньше:

    rleclerc@fvrwbp01:~# gcc -o tokens tokens.c
    tokens.c:1:19: fatal error: stdio.h: No such file or directory
    compilation terminated.

Вы написали:

    sudo apt-get install build-essintial

Там опечатка. Попробуйте это вместо этого (я думаю, вы уже делали что-то подобное):

    sudo apt-get install --no-install-recommends gcc

и:

    sudo apt-get install --no-install-recommends build-essential

Иногда корректура имеет значение:

    The following NEW packages will be installed:
      build-essential dpkg-dev g++ g++-4.7 libc-dev-bin libc6-dev libdpkg-perl libstdc++6-4.7-dev libtimedate-perl linux-libc-dev make
    (...)

Это исправило ошибку.

person догонят    schedule 26.03.2014
comment
опечатка: build-essintial --> build-essential, но правки должны быть длиннее 6 символов - person TheTrowser; 26.08.2017

FWIW, Mint 17 просто нуждается в сборке для компиляции программ C:

# apt-get install build-essential
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  dpkg-dev g++ g++-4.8 libc-dev-bin libc6-dev libstdc++-4.8-dev
Suggested packages:
  debian-keyring g++-multilib g++-4.8-multilib gcc-4.8-doc libstdc++6-4.8-dbg
  glibc-doc libstdc++-4.8-doc
Recommended packages:
  libalgorithm-merge-perl
The following NEW packages will be installed:
  build-essential dpkg-dev g++ g++-4.8 libc-dev-bin libc6-dev
  libstdc++-4.8-dev
0 upgraded, 7 newly installed, 0 to remove and 1 not upgraded.
person Mike Gleason    schedule 17.07.2014

Имя пакета для стандартной библиотеки C — libc6. Его заголовочные файлы находятся в пакете разработки: libc6-dev. В некоторых дистрибутивах Linux не установлен пакет разработки. Вам нужно установить его самостоятельно:

sudo apt-get install libc6-dev

Почему установка build-essentials не разрешает зависимости, я не знаю. Но думаю вопрос был не об установке build-essentials и может он вообще не нужен.

Рекомендации:

person user2229691    schedule 18.09.2015

Эта проблема может возникнуть, когда вы пытаетесь использовать неправильный каталог...

Я предлагаю вам проверить каталог.
Обновите ОС с помощью: sudo apt-get update.
Последний вариант — удалить существующий компилятор gcc и установить новый.

Вы также можете попробовать это:

g++ -o [имя файла] [имя исполняемого файла]

person Krishna Chalise    schedule 18.09.2015