Официальный сайт студ.городка НГТУ
Программирование и БД » Кто компилировал под Linux? Отзовись! 

#1  13.03.08 18:43

Кто компилировал под Linux? Отзовись!

С++ интерисует.

Offline

#2  13.03.08 18:52

Re: Кто компилировал под Linux? Отзовись!

что именно интересует?

Offline

#3  13.03.08 19:06

Re: Кто компилировал под Linux? Отзовись!

Интересует, как делать на GNU autotools&Co или как обращаться с готовыми пакетами на нём?

monarx написал(а):

С++ интерисует.

напрасно

Offline

#4  13.03.08 19:07

Re: Кто компилировал под Linux? Отзовись!

интересует сам компилятор, как установить его? чтобы не командой gcc компилировть, а как к примеру bc311

Offline

#5  13.03.08 19:10

Re: Кто компилировал под Linux? Отзовись!

Если командой gcc что-то компилируется, то компилятор уже стоит.

а как к примеру bc311

что bc311 ?

Offline

#6  13.03.08 19:15

Re: Кто компилировал под Linux? Отзовись!

Чтобы  также прогой было, меню там, всё как надо.

Offline

#7  13.03.08 19:30

Re: Кто компилировал под Linux? Отзовись!

IDE, короче

Emacs, KDevelop, Eclipse+CDT, Monodevelop...

Offline

#8  13.03.08 19:51

Re: Кто компилировал под Linux? Отзовись!

отдельно идут от линукса, да? где достать можно инстал на какую-нибудь?

Offline

#9  13.03.08 21:00

Re: Кто компилировал под Linux? Отзовись!

линукс -- это только ядро, если уж на то пошло

emacs и kdevelop должны быть в репозитории любого уважающего себя дистриба

eclipse, скорее всего, можно поставить и не через репозиторий, правда, не знаю, насколько это сложно

Offline

#10  13.03.08 21:08

Re: Кто компилировал под Linux? Отзовись!

monarx, IDE, подобных борладовскому я не знаю, но большинство программных пакетов компилится при помощи сценариев для make (Makefile, надеюсь, знаешь)... если же программа состоит всего из пары файлов, то просто команды gcc тебе хватит... а тектовых редакторов с подсветкой синтаксиса С/С++ ооочень много... тот же mc достаточно хорошо это делает...

вот пример файла-сценария Makefile из одного раннего моего проекта:

Код: Makefile:

CC=gcc
CFLAGS=-Wall -O2
LIBS=-lz -lm -lmysqlclient -lcrypto
 
all: bin/TelnetProxy
 
bin/TelnetProxy: $(patsubst %.c,%.o,$(wildcard *.c))
	$(CC) $^ -o $@ $(LIBS)
 
%.o: %.c
	$(CC) $(CFLAGS) -c -MD $<
 
include $(wildcard *.d) 
 
clean: 
	-rm -f *.o *.d *~
clear: 
	-rm -f bin/TelnetProxy *.o *.d *~


его было достаточно для компиляции всех файлов и сборки в один исполняемый модуль...

Offline

#11  13.03.08 21:14

Re: Кто компилировал под Linux? Отзовись!

не gcc, а g++, если уж на то пошло (gcc вроде не всегда должен удачно собирать)

Offline

#12  13.03.08 21:15

Re: Кто компилировал под Linux? Отзовись!

KDevelop может сделать полноценный проект на GNU autotools, со всеми причиндалами, и configure, и Makefile

Offline

#13  14.03.08 01:26

Re: Кто компилировал под Linux? Отзовись!

OCTAGRAM, gcc компилирует исходники C++ также, как g++, но по умолчанию не выполняет компоновку с библиотеками libg++ или libstdc++.

да и пример был для кода на Си, если ты не заметил...

Offline

#14  14.03.08 03:42

Re: Кто компилировал под Linux? Отзовись!

Jaguar, я отвечал на

чтобы не командой gcc компилировть

Offline

#15  14.03.08 09:44

Re: Кто компилировал под Linux? Отзовись!

Jaguar написал(а):

IDE, подобных борладовскому я не знаю

опа... тут я тебя обманул... вспомнил, что одно время пользовал motor... в принципе достаточно сильно похож на bc311, ну, ессно, со своими прибамбасами...

Offline

#16  14.03.08 09:45

Re: Кто компилировал под Linux? Отзовись!

OCTAGRAM, я тебе уже ответил на счет разницы между gcc и g++

Offline

#17  14.03.08 20:05

Re: Кто компилировал под Linux? Отзовись!

непонял как откомпилировать набранный текст в kdevelope? повезло, всё предложенное шло на одном диске с ядром

OCTAGRAM написал(а):

IDE, короче

Emacs, KDevelop, Eclipse+CDT, Monodevelop...

, кроме motor, он на другом диске, пакеты,  которые с ядром я установил через apt-get install [pakcage], а вот с другого диска пакеты уже не распознаёт, как сделать?

Offline

#18  15.03.08 23:23

Re: Кто компилировал под Linux? Отзовись!

apt-cdrom add

Offline

#19  16.03.08 20:56

Re: Кто компилировал под Linux? Отзовись!

Эта команда просто присоединяет cd-rom, чтобы потом можно было сделать ls /cdrom. А как пакеты с него поставить?

Offline

#20  17.03.08 09:22

Re: Кто компилировал под Linux? Отзовись!

monarx, :)
это команда должна добавить вставленный диск в список репозитариев. что бы потом apt знал, что есть ещё куча софта на таком-то диске. когда будешь устанавливать софт, apt тебя попросит вставить нужный диск...

Offline

#21  21.03.08 19:48

Re: Кто компилировал под Linux? Отзовись!

пасиб большое, я ужен  разобрался. Ещё такой вопрос: на винде для линукса можно писать? А то под линукс ваще не тема программить.

Offline

#22  22.03.08 10:19

Re: Кто компилировал под Linux? Отзовись!

monarx написал(а):

Ещё такой вопрос: на винде для линукса можно писать? А то под линукс ваще не тема программить.

нельзя, код на с++ получится корявый, глючить будет
однозначно можно под линуксом, точно можно под freebsd, есть успешные случаи когда под линукс писали сидя под solaris

Offline

#23  22.03.08 21:33

Re: Кто компилировал под Linux? Отзовись!

monarx, можно. Для этого нужно использовать MinGW или Cygwin. Т. е. чтоб там было юниксовое окружение и gcc. Ну и IDE можно поставить. MinGW Developer Studio, Dev-C++ или Codesourcery G++. Возможно, Eclipse+CDT и Sun Studio тоже подойдут.

Либо можно поставить те же самые IDE, что и для Linux, например, KDevelop. Но это уже, скорее всего, будет проще сделать через Cygwin, чем через MinGW.

Для полноты картины укажу ещё, что для Windows, кроме третьесторонних Cygwin и MinGW, есть ещё Interix от самих Microsoft. В отличие от Cygwin и MinGW, Interix является не прослойкой над WinAPI, а самостоятельной подсистемой, такой же, как подсистемы Win32, Win16 и DOS.

P. S. А тебе точно надо на C++ писать?

Offline

#24  24.03.08 22:55

Re: Кто компилировал под Linux? Отзовись!

Да!

Offline

#25  25.03.08 02:38

Re: Кто компилировал под Linux? Отзовись!

Судя по постам, будешь с C++ом как обезьяна с гранатой, только без обид. И чего ради, непонятно. Для успешного использования C++ нужно задать много вопросов, и на многие найти ответы. Ну не может, не может такой человек писать посты вроде #4.

Offline

#26  25.03.08 03:59

Re: Кто компилировал под Linux? Отзовись!

OCTAGRAM, путь в тысячу шагов начинается с одного шага.

Offline

#27  25.03.08 21:15

Re: Кто компилировал под Linux? Отзовись!

C++ не лучший первый шаг.

Offline

#28  25.03.08 23:07

Re: Кто компилировал под Linux? Отзовись!

OCTAGRAM, совершенно не важно какой язык будет осваивать человек... главное - это алгоритмы, а инструмент не важен...

Offline

#29  26.03.08 15:27

Re: Кто компилировал под Linux? Отзовись!

Насчёт алгоритмов не согласен. Они важные, но не главные. Скажем так, знание алгоритмов при разработке пакетов мне помогает примерно также, как умение доить корову при приготовлении манной каши.

Offline

#30  26.03.08 16:46

Re: Кто компилировал под Linux? Отзовись!

OCTAGRAM написал(а):

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

фасовочных пакетов?

коров доят специально обученные люди, их называют доярками и доярами.

манная каша - отстой, как и паскаль, вижуалбейсик, "острый си" и жава (хотя некоторым нравится)

С++ ничем не хуже прочих языков для того, чтобы учиться программировать. иногда мелькает мнение, что нужно начинать с питона (о да, питон! питон! великий язык будущего, "который одинаково хорошо подходит как для новичков, так и для профессионалов!" - не верю)

С/C++ хорош тем, что не дает забывать о том, что есть биты, память, процессор и прочие элементы из супового набора. проблема говноязыков в том, что если на них учиться, то потом компьютер воспринимается как некий аппарат, в который с одной стороны что-то суешь (баранов, ага), а с другой стороны получаешь продукт (колбасу, ага)

Offline

#31  27.03.08 18:00

Re: Кто компилировал под Linux? Отзовись!

Matrim написал(а):

С/C++ хорош тем, что не дает забывать о том, что есть биты, память

Это не лучший из языков, которые не дают забывать о...

Раньше люди были счастливы, если программа заработала. Когда появился C, люди были счастливы, что они могут выполнять одну и ту же программу на разных архитектурах. Новые требования начались с появления вируса Морриса. Теперь уже было недостаточно, чтобы программа просто работала, нужны были гарантии. С тех пор языки C и C++ только устаревали и устаревали. Тот класс ошибок, который специфичен только для C и C++, одновременно и особенно опасен. Если изжить C и C++, ну или хотя бы оставить их выполняться только на .NET (Managed C++) и Valgrind, тогда можно было бы перейти к продуктивному решению ошибок более высокого уровня. Программисты на C и C++ -- это тормоз прогресса.

Offline

#32  27.03.08 18:53

Re: Кто компилировал под Linux? Отзовись!

если изжить С и С++, то на чем тогда писать новые говноязыки? :)

Offline

#33  27.03.08 19:01

Maq
Профиль

Re: Кто компилировал под Linux? Отзовись!

благодаря .NET теперь програмисты "домохозяки" что могут писать.
это как веб сайты от школьников.

в топку . NET !!!

Offline

#34  28.03.08 15:30

Re: Кто компилировал под Linux? Отзовись!

Matrim написал(а):

иногда мелькает мнение, что нужно начинать с питона

Ну в MIT'e теперь начинают, хотя я этот шаг их не понял. Вроде известные курсы SICP у них были по Схеме (кстати, есть у меня в шаре видео 8,86Gb и PDF), зачем переходить на Питон было?

Я вот с Бейсика начинал, который как бы невзначай вместе с MS-DOS 6.22 был. И ничего, жив-здоров. Я же не остановился на нём. Хотя сейчас я едва ли, что вспомню из того времени.

Offline

#35  28.03.08 15:33

Re: Кто компилировал под Linux? Отзовись!

Matrim написал(а):

если изжить С и С++, то на чем тогда писать новые говноязыки? :)

Новые говноязыки лучше писать на говноC++ и говноC.

Maq, поддерживаю.

Offline

#36  30.03.08 23:01

kai
Профиль

Re: Кто компилировал под Linux? Отзовись!

а на оборот можно откемпелировать пакеты для linux под виндоз и для виндоз?

Исправлено kai (30.03.08 23:03)

Offline

#37  02.04.08 07:46

Re: Кто компилировал под Linux? Отзовись!

Собрать кросскомпилятор или скачать готовый.

Offline

#38  09.04.08 01:52

Re: Кто компилировал под Linux? Отзовись!

OCTAGRAM написал(а):

Насчёт алгоритмов не согласен. Они важные, но не главные

алгоритмы нужны, что бы у тебя голова работала как надо.

Offline

#39  09.04.08 10:42

Re: Кто компилировал под Linux? Отзовись!

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

Offline

#40  10.04.08 21:25

Re: Кто компилировал под Linux? Отзовись!

Jaguar, ))) дык я вообще. Чтоб не привыкнуть все подряд писать на коленке.

Offline

#41  17.04.08 15:23

Re: Кто компилировал под Linux? Отзовись!

Скажем, КМП ты не будешь каждый раз писать заново. Это гмм... дорого. Во-первых, don't repeat yourself, во-вторых, время на отладку и тестирование. Что-то можно реализовать, особенно, если это ключевое место в программе и можно развернуться, но по каждому неудобному случаю перереализовывать готовое (как правило) проигрышная стратегия.

Jaguar, поясни. Мне вот моё олимпиадное прошлое практически никак не помогает. Базовые алгоритмы вроде быстрой сортировки я вообще за алгоритмы не считаю, а более продвинутые вроде КМП или проталкивание предпотока я уже наизусть и не помню, но я и не реализую. Повседневные трудности -- это чтоб программа нормально с Unicode работала, чтоб переносима была. Привязки к библиотекам делать, тоже надо. Сейчас вот переношу XMLCopyEditor на Mac OS X, чувствуется, что писал новичок. Нет проверки, принимает ли libiconv char** или const char**. Хотя должна быть, в Autotools эта проверка точно есть. Не упомянуты 3 зависимости. Я уже вместо INSTALL configure.in читал, потому что раз сюрьприз, два сюрьприз, чего-то опять не хватает. В нескольких местах зашит внутрь путь /usr/local/share/xmlcopyeditor. В Makefile и в исходных кодах (!!!). Вот это я понимаю, на коленке делали. Только эта наколеночность перпендикулярна алгоритмам. Этот новичок, быть может, хоть трижды специалист по алгоритмам, но если эти алгоритмы не завернуть должным образом, людям вроде меня хочется плеваться при попытке завести такую бодягу.

Offline

#42  17.04.08 23:28

Re: Кто компилировал под Linux? Отзовись!

OCTAGRAM, ты забываешь с чего спор начался... реально уже все в оффтоп ушло... человек начинает изучать программирование (или продолжает изучать, не суть важно)... с какого языка начинать - абсолютно все равно... алгоритмирование как таковое - это не простейшие методы сортировки, а правильность подхода к решению задачи... даже способов сортировки много, а необходимо выбрать именно тот, который будет удовлетворять полностью... понятно, что ты уже давно программист и решаешь задачи куда более сложные, чем простые алгоритмы, но и ты в детстве начинал с простейших алгоритмов, таких как:
1. перевернуться на бок, подтянуть ноги, упереться коленками, выпрямить ноги...
2. снять штаны, сесть на гаршок, поссать, встать, одеть штаны, крикнуть в знак того, что поссал...
щас-то, понятное дело, тебе эти алгоритмы уже не нужны (пока что), они у тебя уже отпечатались... типа библиотеки под коркой образовалось...
буквально вчера натолкнулся на сравнение двух фрэймворков для PHP... и там было интересное заключение... CakePHP делает все автоматически, но вот как оно реально работает - надо еще изучать и копать в исходниках... ну, я не говорю про методы применения мат.ожидания для оптимизации запросов к сайту с оч. большой базой... но это все алгоритмы...

Исправлено Jaguar (17.04.08 23:29)

Offline

#43  18.04.08 03:06

Re: Кто компилировал под Linux? Отзовись!

а спор тем временем начинался с...

OCTAGRAM написал(а):

Matrim написал(а):

С/C++ хорош тем, что не дает забывать о том, что есть биты, память

Это не лучший из языков, которые не дают забывать о...

C++ требует знать разные ненужные вещи, причём не апостериори, а априори. Апостериори -- это если бы компилятор при попытке написать что-нибудь нездоровое не давал бы это скомпилировать или хотя бы warning исправно писал. А в C++, наоборот, скомпилируется, и это by design нетривиально пресечь на уровне языка. Подвохи и сюрьпризы. Не в последнюю очередь из-за "наследства" C.
Классика жанра:

Код::

#include <stdio.h> 
int main () {
    int length = 8265; 
    int width  = 0252;
    int height = 8292; 
    printf("length= %d\n", length);
    printf("width = %d\n", width); 
    printf("height = %d\n", height);
}

Программа компилируется без проблем
Что она выводит?

Код::

#include <limits.h> 
/*   If  *y  is zero and  x > 0  set  *k  to the biggest positive integer.
 *   If  *y  is zero and x <=0  leave  *k  unchanged. 
 *   If  *y  is not zero  set *k  to be x divided by *y and increment *y by 1.*/ 

void check_divide(int* k, int x, int* y)  {
    if(*y = 0) 
        if(x > 0)
            *k = INT_MAX; 
    else
        *k = x / *y;  /* it is safe to divide by *y since it cannot be 0 */ 
        *y++;
}

Здесь 4 ошибки. Причём, в больших кусках кода не все заметны.

Код::

//   If the signal ahead is clear then increase the speed. 

void increase_speed_if_safe(int speed, int signal)  {
if(signal == CLEAR); 
    increase_speed ();
}

Тоже мало приятного.

Код::

int  RADIO_PORT = ...; 
void open (int port) {...}
void send (int port, char data) {...} 
void close (intport) {...} 
void  send_bytes (char first_byte, char last_byte) {
    open (RADIO_PORT); 
    for  (char b = first_byte;  b <= last_byte;  b++) {
        send (RADIO_PORT, b); 
    }
    close (RADIO_PORT); 
}

бесконечный цикл, когда last_byte == 127 (и не проверяется переполнение)

плюс к этому

развлечение с NULL
развлечение с char

и прочее, прочее

Я не спорю, программирование сложная наука, но все эти прелести -- это отнюдь не адекватная сложность. Адекватная сложность -- это когда нужно учитывать тупиковые ситуации, планировать использование памяти. Это да. Это нетривиально, но без этого никак. Знать, что в языке числа с нуля восьмеричные -- не нужно. Помнить про искуственность сишного for -- тоже не нужно. (у C++ в for тоже есть, о чём помнить) Синтаксис должен быть более устойчив к незаметным ошибкам. И семантика тоже. Приколы с NULL и char совершенно излишни, никому не кажется? И ладно бы, компилятор напоминал бы обо всём этом.
Неудивительно, что по статистике в программах на C ошибки в три раза чаще (C++ в этом плане не особо лучше ИМХО). Более профессиональный программист делает меньше ошибок, чем менее профессиональный, но всё равно больше в три раза, чем мог бы. Да чего тут далеко ходить, недавно LINA пытался поставить. Ладно бы сегфолт в самом эмуляторе, но нет, до запуска эмулятора дело не дошло. Сегфолт при попытке докачать необходимые файлы из Интернета (сеть есть, деньги есть). Шекспир до версии 0.9.5 запустить на Intel процессоре было практически нереально, страшно глючил. Ну и вообще падает(именно сегфолтится) самый разный софт. При том, что на дворе 2008й год уже. Доколе? По одну сторону пипл, который хавает, по другую сторону программисты с нездоровой любовью к C++. Catch-22.

Вот я и утверждаю, что от C++ вообще и для самообучения в частности надо делать от ворот поворот. На C++ лучше всего изучается C++   %)

P. S. А ещё, касательно уязвимостей, куча третьих лиц нагло утверждают, что эти проблемы надо решать SELinux'ом, chroot'ом или DEP'ом в процессоре. Программы не должны запускать вредоносный код, потому что настоящие разработчики никогда не пишут "если в аргументе шеллкод, то исполнить шеллкод из аргумента". А не потому, что хитрый SELinux или chroot или DEP им не позволит этого сделать. Все эти SELinux'ы -- это вторичная защита, а никак не первичная.

Offline

#44  18.04.08 09:48

Re: Кто компилировал под Linux? Отзовись!

можно сколько угодно долго ругать С/С++, они от этого хуже не станут :)
испытание временем эти языки уже выдержали, у них есть своя ниша и в этой нише их заменить нечем. когда я спрашивал, на чем же писать новые говноязыки, если изжить С++, то я в общем то не шутил - операционные системы и языки до сих пор пишут на С; всё, что требует производительности пишут на С (и на ассемблере тоже. ассемблер это вообще ужасный язык для тех, кто небрежно относится к программированию. никаких проверок, собирается совершенно нерабочий код, сколько может продолжаться это безобразие?!)

эта тема вообще вызывает у меня здоровый смех, OCTAGRAM ругает С и при этом молчит, с какого же языка нужно начинать. да, в С++ сложный синтаксис и там можно навернуть такое, что без 0.5L потом не разобраться, но никто не заставляет этого делать - можно писать правильно, все зависит от программиста, жестких рамок нет.

С++ подходит для обучения программированию, я настаиваю :)
именно по той причине, что он требует внимательности и понимания происходящих в железном болване процессов.

p.s. я часто пользуюсь perl. это удивительный язык, после которого синтаксис С++ уже не так пугает. но начинать с perl не стоит, да.

Offline

#45  18.04.08 23:15

Re: Кто компилировал под Linux? Отзовись!

Matrim написал(а):

С++ подходит для обучения программированию, я настаиваю :)
именно по той причине, что он требует внимательности и понимания происходящих в железном болване процессов.

+1

Offline

Программирование и БД » Кто компилировал под Linux? Отзовись! 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.058 сек.
Выполнено 14 запросов.