Не може да се компилира проста 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.

Търсих в Google и намерих някои решения, които казват да инсталирам 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 B архиви. След разопаковането ще се използва 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

Възнамерявам да напиша игра, базирана на браузър, и забелязах, че една опция би била да запазвам/възстановявам игри в кеша на браузъра, както прави тази игра:

play.freeciv.org

Но как да направя ръчно запазване/възстановяване на файлове в кеш? Това би ли проработило в такъв случай? (Ако успея по някакъв начин да копирам файл, да го изтрия от кеша и да го върна ръчно, ще работи ли? Или ще намеря някакъв проблем с разрешение/дата/и т.н.?). Не знам почти нищо за ръчно записване на файлове на клиент. Което ме води до втората част на въпроса:

Какво трябва да прочета, за да манипулирам програмно такива файлове? Използвам php/js, познавам някои от двете (някъде между нивата „лоши“ и „знае какво е рекурсивна функция“, предполагам...).

Първоначалната идея е да се даде опция на играча да не загуби запазена игра/и т.н., в случай че кешът е изтрит (a̶s̶ ̶h̶a̶p̶p̶e̶n̶s̶ ̶i̶n̶ ̶t̶h̶i̶s̶ ̶g̶a̶m̶e̶).

Благодаря ви предварително.

Играта е актуализирана и сега предлага повече опции за управление на запазени игри. Можеше да спестява само до достигане на определено ограничение на пространството (кеш пространство, което изглежда е специфично за браузъра) или да изтрие всички запазени игри. (Доста спартански)

  -  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++ го поправи, но съм съгласен, че всичко, от което се нуждаех, беше пакетът за разработка. - 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-essential --› build-essential но редакциите трябва да са по-дълги от 6 знака - person TheTrowser; 26.08.2017

FWIW, Mint 17 просто се нуждае от build-essential за компилиране на 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