Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.08.2010, 18:52   #1
miguel_condie
Новичок
Джуниор
 
Регистрация: 10.08.2010
Сообщений: 2
По умолчанию Управление LPT портом под FreeBSD

Уважаемые программисты!
Прошу помощи у Вас, хочу выяснить, как откомпилировать следующий код на FreeBSD 7.2
собирать пытаюсь так:
gcc file.c -o out_file

Я сам не программист и код на си, и вывод компилятора понимаю интуитивно, ну а по сути - не понимаю.
Назначение программ в управлении LPT портом (преимущественно запись в него), просто светодиодики зажигать для отображения состояния определенных демонов. В идеале хочется откомпилировать рабочую программу.

Исходники следующие:

-------------------------------------------------------

Источник: http://www.excamera.com/articles/21/parallel.html

Код:
#include <stdio.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/dev/ppbus/ppi.h>
#include <sys/dev/ppbus/ppbconf.h>

static int ppi_fd;

static void do_init(void)
{
  char port[] = "/dev/ppi0";

  ppi_fd = open(port, O_RDWR);
  if( ppi_fd < 0 ) {
    perror(port);
    exit(1);
  }
}

static void do_out(unsigned long outval)
{
  int val = outval, n;

  n = ioctl(ppi_fd, PPISDATA, &val);
  if( n < 0 ) {
    perror("ioctl PPISDATA");
    exit(1);
  }
}

static unsigned long do_in(void)
{
  int val, n;

  n = ioctl(ppi_fd, PPIGSTATUS, &val);
  if( n < 0 ) {
    perror("ioctl PPIGSTATUS");
    exit(1);
  }
  return val;
}
--------------------------------------------------------
gcc выдает :

#gcc lpt.c -o lpt

lpt.c: In function 'do_init':
lpt.c:16: warning: incompatible implicit declaration of built-in function 'exit'
lpt.c: In function 'do_out':
lpt.c:27: warning: incompatible implicit declaration of built-in function 'exit'
lpt.c: In function 'do_in':
lpt.c:38: warning: incompatible implicit declaration of built-in function 'exit'
/usr/lib/crt1.o(.text+0x85): In function `_start':
: undefined reference to `main'

---------------------------------------------------------

Источник: http://www.openkazan.info/node/152

Код:
#include <stdio.h>
#include <fcntl.h>
#include <machine/cpufunc.h>

int main(int argc,char* argv[])
{
int val,port;
int fd;

if(argc<3){fprintf(stderr,"usage: %s port value\n",argv[0]); exit(1);}
if(sscanf(argv[1],"0x%x",&port) && sscanf(argv[2],"0x%x",&val))
{
fd=open("/dev/io",O_RDWR);
if(fd==-1){perror("open");exit(1);}
outb(port,val);
close(fd);
}
else
{fprintf(stderr,"port and value must be in hex format with 0x prefix\n"); exit(1);}

}
----------------------------------------------------------

gcc выдает:

gcc_log.txt
------------------------------------------------------------

Итог - не собирается, как поправить - не знаю.

Последний раз редактировалось miguel_condie; 10.08.2010 в 18:55.
miguel_condie вне форума Ответить с цитированием
Старый 10.08.2010, 19:58   #2
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

man 3 exit
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Старый 14.08.2010, 07:59   #3
miguel_condie
Новичок
Джуниор
 
Регистрация: 10.08.2010
Сообщений: 2
По умолчанию

Ну что, я использовал функцию _Exit, incompatible implicit declaration пропало, а как с ошибкой /usr/lib/crt1.o(.text+0x85): In function `_start': : undefined reference to `main' быть?
miguel_condie вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
lpt порт DeDoK Компьютерное железо 2 11.07.2010 13:23
LPT порт ImmortalAlexSan Компьютерное железо 5 19.06.2010 18:35
LPT ПОРТ master3763 Общие вопросы C/C++ 7 11.08.2009 10:32
LPT порт. Maxs Помощь студентам 2 19.04.2009 11:47