Юнит ports
Модератор: Модераторы
Юнит ports
Ребят а почему нет такого юнита в линакс сборке х64?
Ок поставим вопрос по другому кто нить может написать на асме х64 пару строк аналогичным этим
Код: Выделить всё
MOV DX,0378H
MOV AL,data //data - то, что послать.
OUT DX,ALКакая версия компилятора? В версии 2.2.0 юнит ports, судя по всему, просто забыли включить в makefile.
В версии 2.2.2rc1 он должен быть.
В версии 2.2.2rc1 он должен быть.
Теперь он вообще не видит юнитов. При компиляции
Дает
Добавлено спустя 8 минут 36 секунд:
Да и судя по списку тоже нету:
Код: Выделить всё
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
Can't find unit system
Эта ошибка часто возникает, если компилятор находит модуль (в данном случае System) от старой версии FPC. Проверьте, корректен ли fpc.cfg. Также может мешаться какой-нибудь лишний fpc.cfg, например, в домашнем каталоге.
По поводу ports: его отсутствие в сборке для x86-64 Linux является, по всей видимости, ошибкой. Я сообщил в багтрекер (баг №11633).
Пока эту ошибку не исправили, можно попытаться взять его из исходников и добавить к своей программе.
Как удалить все установленные версии ФПК?
А как они устанавливались? С помощью пакетного менеджера? Тогда им и удалять.
Ошибку уже поправили, но в версию 2.2.2 это исправление не попадёт. Поэтому имеются следующие варианты:
Ошибку уже поправили, но в версию 2.2.2 это исправление не попадёт. Поэтому имеются следующие варианты:
- взять из SVN свежую версию модуля x86.pp, и, вместе с модулем ports, добавить в свою программу;
- самостоятельно внести в свою версию FPC изменения из ревизии 11360 и пересобрать RTL;
- пользоваться FPC 2.3.1 (он нестабилен, но, думаю, скоро эти изменения будут внесены в FPC 2.2.3, тогда можно будет пользоваться этой версией).
Устанавливался из бинарного, тара ./install.sh
Смотреть следующие каталоги, если установка велась в /usr/local:
RTL:
Исходник:
Экзешник, или ссылка на него:
Подробно этот и другие вопросы установки освещены в buildfaq.
RTL:
Код: Выделить всё
/usr/local/lib/fpc/$VERSIONИсходник:
Код: Выделить всё
/usr/local/src/fpc-$VERSIONЭкзешник, или ссылка на него:
Код: Выделить всё
/usr/local/binПодробно этот и другие вопросы установки освещены в buildfaq.
