nixp.ru v3.0

24 января 2017,
вторник,
22:20:17 MSK

DevOps с компанией «Флант»

GCC №2

OfftopicFlame

sanctus написал 6 мая 2006 года в 14:30 (427 просмотров) Ведет себя неопределенно; открыл 6 тем в форуме, оставил 23 комментария на сайте.

Как я уже замучился с компилятором.Первый раз сел за linux вчера.Тыком пыком я понял что мне нужен компилятор gcc.Я его скачивал(ftp://gd.tuwien.ac.at/gnu/gcc/releases/gcc-3.3.1/ вот этот -gcc-3.3.1.tar.gz).Почитал хелп.не помог.Народ помогите поставить компилятор)Я не хочу под винду возвращаться)

// Тему переместил(а) fly4life из форума «UNIX FAQ: вопросы по UNIX/Linux».

Дмитрий Шурупов

Дистрибутив какой?

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

sanctus

у меня Linux Ubuntu .Можешь дать сылку на этот собранный пакет?И где это средство пакетного менед?Спасибо за внимание/

Дмитрий Шурупов

А что насчет команды:

apt-get install gcc

?

sanctus

sanctus@MZ:~$ apt-get install gcc

E: Не могу открыть файл блокировки /var/lib/dpkg/lock — open (13 Permission denied)

E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

sanctus@MZ:~$

sanctus

Я уже стоко всего прочитал.Но ничего нужного не нашел.Блин.=(

Дмитрий Шурупов

А теперь то же самое под root’ом. Зайти под него можно командой su.

Вообще, не зная таких вещей, неразумно сначала лезть на форум. Надо книжки почитать…

sanctus

Извиняюсь за мою глупость.Исправлюсь

sanctus@MZ:~$ su

Password:

su: Authentication failure

Извините.

sanctus@MZ:~$

пасс какой?тАкойже как и к обычному?

Дмитрий Шурупов

Для того, чтобы исправиться, есть http://www.ubuntu.com/support/faq?action=show&redirect=FAQ

Там пишут, что: «The root account is disabled when you first install Ubuntu. The first user created during the installation has administrative rights on the system, and can run programs as root with sudo, using only their normal user password.»

Т.е.:

sudo apt-get install gcc

sanctus

Спасиб большое.Уже многое что сделал помимо gcc.Вот толкько одно меня сейчас глушит/Как войти под root?команда su требует пароль для входа под root

sanctus

разобрался

anonymous

У меня тоже вопрос по gcc.

Примерно два года назад я познакомился с Linux.Конкретно полазив по интернету я

нашел много всякой документации по Линуксу.Я понял,что для разработки программ

есть среда GNU Emacs.А чтобы писать программы на C и C++ используется компилятор GCC.У меня дистрибутив Linux RedHat9.0 и GCC там уже поставляется.

Начал искать в интернете как компилировать программы при помощи GCC.

Зашел на gcc.gnu.org почитал мануал,но там никаких примеров,как нужно компилировать.Начал искать по сайтам.И самое интересное,что команды,которые были написаны на этих сайтах,мой gcc непонимает.Перепробовал кучу всяких команд

и их вариаций,а всё беспполезно.Вот пример нескольких из них:

gcc -new.c -o new

-c new.c -o.new

В общем полно всяких вариантов в интернете видел.

Ну а как же компилируете Вы ?

p.s.

Я не чайник.

Дмитрий Шурупов

Да хотя бы просто:

gcc file.c

?

Будет исполняемый файл a.out.

Ну, или:

gcc -o file.bin file.c

Тогда уже file.bin.

А вообще странно вы как-то читали (или что-то странное читали?)… Попробуйте `man gcc`.

anonymous

man gcc я набирал,но GNU Emacs жалуется,что незнает директорию нахождения мануала.

А странные вещи я читал на сайтах,посвященных программированию под Linux.

Сейчас попробую скомпилировать так,как Вы посоветовали.

anonymous

GNU Emacs мне пишет:

/bin/bash :line1:gcc :command not found

И вот так он мне все время пишет.

Дмитрий Шурупов

1) GNU emacs тут при чем? Вводим это в обычной консоли.

2) А откуда у вас уверенность, что gcc установлен?

whereis gcc

?

myst
Andrew_programmer_
GNU Emacs мне пишет:

/bin/bash :line1:gcc :command not found

И вот так он мне все время пишет.

А что ты делаешь с Emacs что он тебе такое пишет? Где имеено в Emacs ты это набираешь?

rgo

if you has my-file.c opened in emacs buffer, then type `f10-t-c’. than in minibuffer you should have `make my-file’. now type `ret' and work done.

or, alternatively, type in shell `make my-file’. if `404. gcc not found’ — install gcc, and be happy.

anonymous

Оказалось,что в Linux RedHat9.0 нужно устанавливать:GCC,SDL и многое другое,через менеджер установки и удаления пакетов(я думал,что при установке дистрибутива GCC сразу-же устанавливается).

После установки компилятора и библиотек,я решил проверить их работу.Первым начал проверять работу компилятора.Набрал программу «Hello world» и скомпилировал.После компиляции запустил — программа работала.

Потом решил проверить работу библиотеки SDL.Взял пример testsprite.c,который прилагается к исходникам библиотеки SDL.Естественно,что вместо #include «SDL.h»

я написал #include .

Начал компилировать,а компилятор мне говорит,что незнает где находиться данный файл или дериктория.Хотя в /usr/include/SDL есть и SDL.h и все остальные файлы библиотеки с расширением h.Тогда я взял эти файлы и скопировал их в дерикторию с программой.Начал компилировать.Все недостающие файлы компилятор нашел.Начал создавать обьектные файлы(создал несколько штук),а потом пишет:

:undefined reference to 'SDL_GetTicks'

collect2: ld returned exit status

В чем я делаю ошибки ?

И как только народ программирует в Linux без хлопот.

Дмитрий Шурупов

> :undefined reference to 'SDL_GetTicks'

> collect2: ld returned exit status

А куда сами библиотеки установились? После установки, вероятно, надо прогнать:

ldconfig

При этом путь к библиотекам SDL (ну, например, /usr/lib) должен присутствовать в /etc/ld.so.conf

anonymous

Библиотеки установлены в дерикторию /usr/lib

Но в файле ld.so.conf этого пути нет.

Вот немогу никак понять- библиотеки установились и они нахолятся в нужных дерикториях,а конфиги непрописались.

Как устанавливали SDl вы ?

И еще вопрос.Для чего нужны файлы makefile.in и makefile.am ?(они во всех библиотеках есть)

Дмитрий Шурупов

Если его там нет, то добавьте. И выполните:

ldconfig

Или, может, это в RH будет как-нибудь типа /sbin/ldconfig (/usr/sbin/ldconfig …).

SDL мы не устанавливали, а если и будем, за нас все хорошо сделает apt-get (Debian).

Про GNU make хорошо тут пишут: http://www.gnu.org/software/make/manual/make.html

Вообще же, наверное, все-таки хорошо сначала бы купить книжку, что ли, а потом начинать попытки программировать.

rgo

какая груда вопросов :)

я написал #include .

Начал компилировать,а компилятор мне говорит,что незнает где находиться данный файл или дериктория.Хотя в /usr/include/SDL есть и SDL.h

варианта два, либо `#include ', либо `gcc -I/usr/include/SDL …' (или, модификация второго варианта: `export CFLAGS=-I/usr/include/SDL' и `make’).

Как устанавливали SDl вы ?

в генту кучей команд `emerge sdl-…’, а в слаке, я помниться ничего окромя `./configure && make && make install' не признавал, и проблем с отсутствующими хедерами, или выяснениеми на сколько ебилдов разбили sdl не имел. Правда с зависимостями возиться приходилось…

Для чего нужны файлы makefile.in и makefile.am ?(они во всех библиотеках есть)

это для скрипта configure — он из них делает Makefile. Не заморачивайся, это просто для того, чтобы на каждую систему свой Makefile был. А что такое Makefile — Шуруп сказал где искать ответ на этот вопрос.

И как только народ программирует в Linux без хлопот.

ну как… система поставлена, настроена. в ~/.bash_profile записаны CFLAGS и CXXFLAGS, LDFLAGS, плюс всякие emacs’ы, gdb, и прочие прелести жизни.

Надо просто один раз разобраться, а потом действительно удобно.

rgo
Вообще же, наверное, все-таки хорошо сначала бы купить книжку, что ли, а потом начинать попытки программировать.

не дзенский путь. :)

Да и не встречал я книжек на тему: как заставить работать cc+ld+make. Правда и не искал.

anonymous

Только вот в ручную прописывать RH9 не даёт.

Самое странное,что даже пот root-ом мои права и возможности ограничены.

Например,я немогу удалять(да и вообще модифицировать) файлы скопированные с других носителей(диски,дискеты).Изменять можно только те файлы,которые созданы в RH9.

Steck

Может стоит попробовать

gcc testdsl.c `sdl11-config —libs —cflags` -o testsdl

anonymous

Раз уж библиотека нехочет устанавливаться,тоя решил пойти по другому пути.

У меня есть исходники библиотеки SDL.Где находяться файлы с расширением .h я прописал вручную.А вот как быть с исходниками библиотеки,ведь они лежат в разных папках(что касается аудио в одной,видео в другой и т.д.) ?

Пробовал делать через -I,-B,но толи не так делал,толи это неправильный путь к решению проблемы.

myst

Я думаю пора тему переносить в «Без комментариев…»

metal

Может все-таки книжки почитаешь? Метод тыка хорош, но только при наличии хорошего представления о предмете и отсутствии документации. Во всех остальных случаях лучше читать документацию. Попробуй вот это для начала: http://www.linux.org.ru/books/linstall/linstall.html

anonymous

Скачал с сайта www.libsdl.org последнюю версию библиотеки SDL.

Набрал в командной строке /home/…/configure; make; make install

Библиотека установилась.Теперь в программах gcc находит заголовки типа и т.д.

После установки библиотеки SDL у меня появилась папка …/src в которой находятся другие папки содержащие объектные файлы.

Вопрос.Как производить линковку,ведь файлы находятся в разных папках и общее число файлов около полусотни ?

(набирать вручную все пути к файлам это не дело)

Читал документацию(с разных сайтов),но ответа на этот вопрос ненашел.

И еще вопрос.Что за файл такой SDL_ttf.h ?

У меня в библиотеке SDL его нет,а без него программы эсдиэловские не работают(некоторые).

myst

Ыыы… убейте меня! А банально установить пакет с SDL ты не мог что ли?

anonymous

Когда в чем-то разберешся,то это становиться понятным(элементарным).

Я раньше понять никак немог- каким образом командами make make install(я прямо так и набирал) устанавливаются программы и исходники.Только потом догадался как надо правильно команды писать.

Честно говоря,в Линуксе много документации без примеров(команды описывают,а примеров не показывают).

Всетаки мне хотелось бы получить ответ по теме линковка(предыдущий пост).

metal

Ну вот это глянь http://subscribe.ru/archive/comp.soft.prog.linux/200202/21174837.html Но лучше все же сделать что я тебе раньше писал: изучить идеологию построения *nix систем, тогда понятно будет что как и почему устроено.

anonymous

metal,большое тебе спасибо!!!

Я теперь знаю в каком направлении копать нужно,а то раньше не то искал.

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.