Юнит ports

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Юнит ports

Сообщение cr0acker » 06.07.2008 00:38:50

Ребят а почему нет такого юнита в линакс сборке х64?
cr0acker
новенький
 
Сообщения: 13
Зарегистрирован: 09.11.2006 01:59:09

Re: Юнит ports

Сообщение cr0acker » 08.07.2008 12:38:22

Ок поставим вопрос по другому кто нить может написать на асме х64 пару строк аналогичным этим
Код: Выделить всё
MOV DX,0378H

MOV AL,data //data - то, что послать.

OUT DX,AL
cr0acker
новенький
 
Сообщения: 13
Зарегистрирован: 09.11.2006 01:59:09

Re: Юнит ports

Сообщение Максим » 09.07.2008 02:25:53

Какая версия компилятора? В версии 2.2.0 юнит ports, судя по всему, просто забыли включить в makefile.

В версии 2.2.2rc1 он должен быть.
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 598
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Re: Юнит ports

Сообщение cr0acker » 09.07.2008 23:52:42

Теперь он вообще не видит юнитов. При компиляции
Код: Выделить всё
program tester;
uses
  linux,libc,ports;
var
  i:integer;
begin
if not(geteuid()=0) then
  begin
    writeln('ERROR, this  program needs root previleges');
  end;
  ioperm($378,3,1);
  i:=0;
  for i:=$0 to ($255) do
  begin
    //outb(i,$378);
  end;
end.

Дает
Код: Выделить всё
cr0acker@sw-19-001:~/linux-blower> fpc main.pas
Free Pascal Compiler version 2.2.2rc1 [2008/06/10] for x86_64
Copyright (c) 1993-2008 by Florian Klaempfl
Target OS: Linux for x86-64
Compiling main.pas
Fatal: Can't find unit system used by tester
Fatal: Compilation aborted
Error: /usr/local/bin/ppcx64 returned an error exitcode (normal if you did not specify a source file to be compiled)
cr0acker@sw-19-001:~/linux-blower>                 


Добавлено спустя 8 минут 36 секунд:
Да и судя по списку тоже нету:
Код: Выделить всё
baseunix.o     fmtbcd.o         libpgetopts.a    libpvarutils.a  strutils.o
baseunix.ppu   fmtbcd.ppu       libpgpm.a        libpvideo.a     strutils.ppu
charset.o      fpcylix.o        libpheaptrc.a    lineinfo.o      syscall.o
charset.ppu    fpcylix.ppu      libpinitc.a      lineinfo.ppu    syscall.ppu
classes.o      getopts.o        libpipc.a        linux.o         sysconst.o
classes.ppu    getopts.ppu      libpkeyboard.a   linux.ppu       sysconst.ppu
clocale.o      gpm.o            libplineinfo.a   linuxvcs.o      system.o
clocale.ppu    gpm.ppu          libplinux.a      linuxvcs.ppu    system.ppu
cmem.o         gprt0.o          libplinuxvcs.a   lnfodwrf.o      sysutils.o
cmem.ppu       heaptrc.o        libplnfodwrf.a   lnfodwrf.ppu    sysutils.ppu
convutils.o    heaptrc.ppu      libpmacpas.a     macpas.o        terminfo.o
convutils.ppu  initc.o          libpmath.a       macpas.ppu      terminfo.ppu
cprt0.o        initc.ppu        libpmatrix.a     math.o          termio.o
crt.o          ipc.o            libpmouse.a      math.ppu        termio.ppu
crt.ppu        ipc.ppu          libpobjects.a    matrix.o        types.o
cthreads.o     keyboard.o       libpobjpas.a     matrix.ppu      types.ppu
cthreads.ppu   keyboard.ppu     libpprinter.a    mouse.o         typinfo.o
ctypes.o       libpbaseunix.a   libprtlconsts.a  mouse.ppu       typinfo.ppu
ctypes.ppu     libpcharset.a    libpserial.a     objects.o       ucomplex.o
cwstring.o     libpclasses.a    libpsockets.a    objects.ppu     ucomplex.ppu
cwstring.ppu   libpclocale.a    libpstdconvs.a   objpas.o        unix.o
dateutils.o    libpcmem.a       libpstrings.a    objpas.ppu      unix.ppu
dateutils.ppu  libpconvutils.a  libpstrutils.a   Package.fpc     unixtype.o
dllprt0.o      libpcrt.a        libpsyscall.a    printer.o       unixtype.ppu
dl.o           libpcthreads.a   libpsysconst.a   printer.ppu     unixutil.o
dl.ppu         libpctypes.a     libpsystem.a     prt0.o          unixutil.ppu
dos.o          libpcwstring.a   libpsysutils.a   rtlconsts.o     variants.o
dos.ppu        libpdateutils.a  libpterminfo.a   rtlconsts.ppu   variants.ppu
dynlibs.o      libpdl.a         libptermio.a     serial.o        varutils.o
dynlibs.ppu    libpdos.a        libptypes.a      serial.ppu      varutils.ppu
errors.o       libpdynlibs.a    libptypinfo.a    sockets.o       video.o
errors.ppu     libperrors.a     libpucomplex.a   sockets.ppu     video.ppu
exeinfo.o      libpexeinfo.a    libpunix.a       stdconvs.o
exeinfo.ppu    libpfgl.a        libpunixtype.a   stdconvs.ppu
fgl.o          libpfmtbcd.a     libpunixutil.a   strings.o
fgl.ppu        libpfpcylix.a    libpvariants.a   strings.ppu
cr0acker
новенький
 
Сообщения: 13
Зарегистрирован: 09.11.2006 01:59:09

Re: Юнит ports

Сообщение Максим » 10.07.2008 02:15:45

Can't find unit system

Эта ошибка часто возникает, если компилятор находит модуль (в данном случае System) от старой версии FPC. Проверьте, корректен ли fpc.cfg. Также может мешаться какой-нибудь лишний fpc.cfg, например, в домашнем каталоге.

По поводу ports: его отсутствие в сборке для x86-64 Linux является, по всей видимости, ошибкой. Я сообщил в багтрекер (баг №11633).

Пока эту ошибку не исправили, можно попытаться взять его из исходников и добавить к своей программе.
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 598
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Re: Юнит ports

Сообщение cr0acker » 11.07.2008 01:28:06

Как удалить все установленные версии ФПК?
cr0acker
новенький
 
Сообщения: 13
Зарегистрирован: 09.11.2006 01:59:09

Re: Юнит ports

Сообщение Максим » 11.07.2008 01:31:34

А как они устанавливались? С помощью пакетного менеджера? Тогда им и удалять.

Ошибку уже поправили, но в версию 2.2.2 это исправление не попадёт. Поэтому имеются следующие варианты:

  1. взять из SVN свежую версию модуля x86.pp, и, вместе с модулем ports, добавить в свою программу;
  2. самостоятельно внести в свою версию FPC изменения из ревизии 11360 и пересобрать RTL;
  3. пользоваться FPC 2.3.1 (он нестабилен, но, думаю, скоро эти изменения будут внесены в FPC 2.2.3, тогда можно будет пользоваться этой версией).
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 598
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Re: Юнит ports

Сообщение cr0acker » 11.07.2008 10:55:03

Устанавливался из бинарного, тара ./install.sh
cr0acker
новенький
 
Сообщения: 13
Зарегистрирован: 09.11.2006 01:59:09

Re: Юнит ports

Сообщение Максим » 12.07.2008 00:33:17

Смотреть следующие каталоги, если установка велась в /usr/local:

RTL:
Код: Выделить всё
/usr/local/lib/fpc/$VERSION

Исходник:
Код: Выделить всё
/usr/local/src/fpc-$VERSION

Экзешник, или ссылка на него:
Код: Выделить всё
/usr/local/bin

Подробно этот и другие вопросы установки освещены в buildfaq.
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 598
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru