Откомпилировать и запустить

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Откомпилировать и запустить

Сообщение aftaev »

Как откомпилировать и запустить простую прогу: http://callrecord.ru/content/%D1%83%D0% ... 1%80%D1%82
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Откомпилировать и запустить

Сообщение Nick »

читаем внимательно сайт:
для компиляции с "математической библиотекой" делаем так:
gcc lpt.c -lm
После этого в директории появится новый файлик, чтобы его запустить пишем ./<имя файла>
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Откомпилировать и запустить

Сообщение aftaev »

Ток на сайте текст приведен, который как понимаю нужно скопировать, куды то записать, потом компилировать?
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Откомпилировать и запустить

Сообщение Nick »

Где на сайте написано:
Программа:
cat lpt.c
начинается текст lpt.c, в linux в консоли есть простенькая программка cat - она выводит на экран содержимое файла или стандартного входа. Т.е. выполнив cat lpt.c можно получить текст программы.
Текст программы кончается там, где написано "Веб-морда:".

ЗЫ Если хочешь что-то загнать в lpt попробуй добавить принтер на этот порт. Через Система-Администрирование-Печать.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Откомпилировать и запустить

Сообщение aftaev »

то есть копирую это и вставляю в терминал и должно работать??? Если так то нифига не работает
(для просмотра содержимого нажмите на ссылку)
cat lpt.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <asm/ioctl.h>
#include <asm/ioctls.h>
#include <sys/io.h>
#include <math.h>
#include <tgmath.h>
//#define base 0xd200 /* printer port base address */
int main(int argc,char *argv[],char *argp[])
{
int status,bit_rozetki,status_old;
unsigned int base=atoi(argv[3]);
if (ioperm(base,1,1))
{
fprintf(stderr, "Couldn't get the port at %x\n", base);
exit(1);
}
status=inb(base);
status_old=status;
if (atoi(argv[1])==4)
{
exit(status);
}
bit_rozetki=pow(2,(atoi(argv[2])-1));
if (atoi(argv[1])==1)
{
if(status&bit_rozetki)
{
outb((status^=bit_rozetki), base);
}
}
if (atoi(argv[1])==2)
{
if (!(status&bit_rozetki))
{
outb((status^=bit_rozetki),base);
}
}
if (atoi(argv[1])==3)
{
if(!(status&bit_rozetki))
{
outb((status^=bit_rozetki),base);
usleep(3000000);
outb(status_old,base);
}
}
/* We don't need the ports anymore */
if (ioperm( base, 3, 0)) {perror("ioperm"); exit(1);}
exit(0);
}
вот что получается:
(для просмотра содержимого нажмите на ссылку)
aft@cnc:~$ cat lpt.c
cat: lpt.c: Нет такого файла или каталога
aft@cnc:~$ #include <stdio.h>
aft@cnc:~$ #include <stdlib.h>
aft@cnc:~$ #include <unistd.h>
aft@cnc:~$ #include <asm/ioctl.h>
aft@cnc:~$ #include <asm/ioctls.h>
aft@cnc:~$ #include <sys/io.h>
aft@cnc:~$ #include <math.h>
aft@cnc:~$ #include <tgmath.h>
aft@cnc:~$ //#define base 0xd200 /* printer port base address */
bash: //#define: Нет такого файла или каталога
aft@cnc:~$ int main(int argc,char *argv[],char *argp[])
bash: ошибка синтаксиса около неожиданной лексемы `('
aft@cnc:~$ {
> int status,bit_rozetki,status_old;
> unsigned int base=atoi(argv[3]);
bash: ошибка синтаксиса около неожиданной лексемы `('
aft@cnc:~$ if (ioperm(base,1,1))
bash: ошибка синтаксиса около неожиданной лексемы `base,1,1'
aft@cnc:~$ {
> fprintf(stderr, "Couldn't get the port at %x\n", base);
bash: ошибка синтаксиса около неожиданной лексемы `stderr,'
aft@cnc:~$ exit(1);
bash: ошибка синтаксиса около неожиданной лексемы `1'
aft@cnc:~$ }
bash: ошибка синтаксиса около неожиданной лексемы `}'
aft@cnc:~$ status=inb(base);
bash: ошибка синтаксиса около неожиданной лексемы `('
aft@cnc:~$ status_old=status;
aft@cnc:~$ if (atoi(argv[1])==4)
bash: ошибка синтаксиса около неожиданной лексемы `argv[1]'
aft@cnc:~$ {
> exit(status);
bash: ошибка синтаксиса около неожиданной лексемы `status'
aft@cnc:~$ }
bash: ошибка синтаксиса около неожиданной лексемы `}'
aft@cnc:~$ bit_rozetki=pow(2,(atoi(argv[2])-1));
bash: ошибка синтаксиса около неожиданной лексемы `('
aft@cnc:~$ if (atoi(argv[1])==1)
bash: ошибка синтаксиса около неожиданной лексемы `argv[1]'
aft@cnc:~$ {
> if(status&bit_rozetki)
> {
> outb((status^=bit_rozetki), base);
bash: ошибка синтаксиса около неожиданной лексемы `('
aft@cnc:~$ }
bash: ошибка синтаксиса около неожиданной лексемы `}'
aft@cnc:~$ }
bash: ошибка синтаксиса около неожиданной лексемы `}'
aft@cnc:~$ if (atoi(argv[1])==2)
bash: ошибка синтаксиса около неожиданной лексемы `argv[1]'
aft@cnc:~$ {
> if (!(status&bit_rozetki))
> {
> outb((status^=bit_rozetki),base);
bash: ошибка синтаксиса около неожиданной лексемы `('
aft@cnc:~$ }
bash: ошибка синтаксиса около неожиданной лексемы `}'
aft@cnc:~$ }
bash: ошибка синтаксиса около неожиданной лексемы `}'
aft@cnc:~$ if (atoi(argv[1])==3)
bash: ошибка синтаксиса около неожиданной лексемы `argv[1]'
aft@cnc:~$ {
> if(!(status&bit_rozetki))
> {
> outb((status^=bit_rozetki),base);
bash: ошибка синтаксиса около неожиданной лексемы `('
aft@cnc:~$ usleep(3000000);
bash: ошибка синтаксиса около неожиданной лексемы `3000000'
aft@cnc:~$ outb(status_old,base);
bash: ошибка синтаксиса около неожиданной лексемы `status_old,base'
aft@cnc:~$ }
bash: ошибка синтаксиса около неожиданной лексемы `}'
aft@cnc:~$ }
bash: ошибка синтаксиса около неожиданной лексемы `}'
aft@cnc:~$ /* We don't need the ports anymore */
> if (ioperm( base, 3, 0)) {perror("ioperm"); exit(1);}
> exit(0);
> }
aft@cnc:~$
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Откомпилировать и запустить

Сообщение Nick »

Нет. Копируешь все, что после cat (cat не надо) в файл lpt.c. Можешь через Gedit или любым другим способом.
Потом в терминале в той же папке
gcc lpt.c -lm

PS маленький экскурс. cat читает все из файла или Стандартного Ввода и выводит на Стандартный Вывод. По умолчанию Стандартный Ввод - это ввод с клавиатуры, Стандартный вывод - это вывод на экран. В bash - это тот терминал, который ты запускаешь под именем консоль, Стандартный вывод можно поменять, например при помощи оператора ">>", таким образом команда
cat 1.txt >> 2.txt
сохранит содержание файла 1.txt в файле 2.txt.

Еще Стандартный Вывод можно изменить при помощи оператора "|" (pipe). В этом случае,
Стандартный вывод первой программы переводится на стандартный ввод второй. Это очень часто используется, если нужно сделать поиск по выводу. Например:
ps aux | grep opera - ps aux - выводит все процессы в системе, а grep фильтрует все это и оставляет только те строки, в которых есть opera.
Ответить

Вернуться в «LinuxCNC»