Вверх ↑
Этот топик читают: Гость
Ответов: 499
Рейтинг: 1
#1: 2007-07-15 06:41:12 ЛС | профиль | цитата
вобщем, хасм под wine установил, fpc установился, запустил оболочку, та вылетела с ошибкой "ole error..."
автоматом компилятор не подхватился, руками через меню добавил - не появился.
собсно, вопрос немного в другом, как прикрутить (и возможно ли) fpc с сайта http://www.freepascal.org?
предвижу возможную траблу с запуском линуксового бинарника из под эмулятора.
а с другой стороны, можно ли исходные тексты, которые скармливаются компилятору, выхватить до запуска самого процесса?
карма: 0

0
Ответов: 5446
Рейтинг: 323
#2: 2007-07-15 06:46:07 ЛС | профиль | цитата
HikeR, можно. Для этого достаточно написать свой пакет для линукса.
карма: 1

0
Ответов: 499
Рейтинг: 1
#3: 2007-07-15 07:08:48 ЛС | профиль | цитата
ыыкк... есть же готовый fpc для линукса. но при выборе пути к компилятору файлы без расширения .exe не показываются. я хотел путь к батнику указать, который и запускал бы все, что надо.

p.s.
напомните плиз, коммандная строка для fpc верная?
%fname% -Sd -Mdelphi -FE%opath% -FU%upath%units -FDtools -CX -dF_Pp[/code]

[size=-2]------ Добавлено в 07:08 [/size]
p.p.s.
под виндой одна MainForm компилируется на ура, по линуксом дает вот такое:
code_1676.txt
что оно хочет?
карма: 0

0
файлы: 1code_1676.txt [1.4KB] [195]
Администрация
Ответов: 15295
Рейтинг: 1519
#4: 2007-07-15 11:32:31 ЛС | профиль | цитата
нет не верная. Должен объявляться дефайн F_P, а не F_Pp
карма: 27
0
Ответов: 499
Рейтинг: 1
#5: 2007-07-15 16:05:34 ЛС | профиль | цитата
скорректировал строку, стало работать. работают практически все примеры (кроме сетевых).
работают в смысле компилируются. в каталоге с .sha создается экзешник, правда в имени две точки (то есть из Demo.sha получается Demo..exe). из самой оболочки при нажатии кнопки "Запустить" компиляция проходит, но автоматом не запускается.
при ручном запуске (wine имя_проги) появляется основная форма программы, а за ней вторая, равная первой по ширине, и где-то 20-30 точек в высоту. при перемещении основной формы ее двойник следует за ней, довольно так плавно. в заголовке надпись: "имя_первой_формы <2>"

но, повторюсь, по крайне мере работает. а вообще, пытаюсь что-нибудь найти про кросс-компиляцию. FPC по идее должен поддерживать такую штуку.
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#6: 2007-07-15 20:26:52 ЛС | профиль | цитата
две формы потому, что одна это главная форма программы, а вторая это Applet - некое скрытое Windows окно всего приложения.

HikeR писал(а):
но, повторюсь, по крайне мере работает. а вообще, пытаюсь что-нибудь найти про кросс-компиляцию

HikeR, у меня складывается впечатление, что имеется некоторое непонимание термина "кросс-компиляция". Возможно я просто не так понял задачу. Однако если хочется с помощью кросс компилятора FPC получить из HiAsm Linux приложения(т.е. работающие без Wine), то сделать этого не получится. Так что не стоит зря свое время тратить
карма: 27
0
Ответов: 499
Рейтинг: 1
#7: 2007-07-15 21:32:43 ЛС | профиль | цитата
под кросс-компиляцией я понимаю именно получение линукс-приложений.
вот тут (http://www.freepascal.ru/article//raznoe/20070512172316/ "Особенности национальной кросс-компиляции") описан метод, чуть ли не пошагово. у меня проблема с получением большого числа исходников (таньга на счете мало , но особой проблемы пока не вижу.

под wine довольно легко компилируются истинно виндовые приложения с получением линуксового приложения (пример - VirtualDub), но там речь идет о Си, да и дополнительные библиотеки довольно легко получить.

Dilma писал(а):
если хочется с помощью кросс компилятора FPC получить из HiAsm Linux приложения(т.е. работающие без Wine), то сделать этого не получится.

не могу не спросить - "почему?"
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#8: 2007-07-15 21:39:06 ЛС | профиль | цитата
HikeR, потому что кросс-компиляция подразумевает использование в приложение кросс-библиотек. Стандартный пакет hiasm почти везде использует прямые WinAPI вызовы, которые являются сервисом ОС Windows и которые отсутствуют как таковые в Linux.
карма: 27
0
Ответов: 499
Рейтинг: 1
#9: 2007-07-17 03:03:24 ЛС | профиль | цитата
то есть, получаемый исходный код ни при каких условиях не может быть портирован? все таки слова "нельзя" и "невозможно" имеют разный смысл.

предположим, я все-таки скачаю исходники fpc. брать придется версию 2.0, ибо 1.9.6 обозвана
Версия 1.9, release candidates: фактически — версия 2.0, недостаточно отлаженная и с пробелами в реализации. Закончено добавление новых возможностей, но уже добавленные еще работают недостаточно хорошо.

у меня есть полный пакет 2.0.0 для линукса, croos-binutils (win32 -> linux). придется собирать работающий компилятор версии 2.0.0 для win32 и как-то подключать его к хасму. чтобы не забегать вперед, спрошу, какие подводные камни могут быть в этом? то есть как полученный fpc 2.0.0 правильно приделать к оболочке?

[size=-2]------ Добавлено в 03:03
p.s.
да, для компилирования нового fpc нужен старый fpc? в таком случае имеющийся компиятор подойдет?

p.p.s
на форуме постоянно встречается "fpc не умеет то-то", "fpc не приспособлен для того-то", "richedit не совместим с fpc". речь идет о имеющеся версии (т.е. 1.9.6) или о любой?
карма: 0

0
Ответов: 5446
Рейтинг: 323
#10: 2007-07-17 05:26:46 ЛС | профиль | цитата
HikeR, ещё раз: без переписывания всех кодов под платформенно-независимые (или хотя бы истинно-линуксовские) библиотеки создать программу, работающую без Wine, не получится.

И кросс-компиляция тут никаким местом не требуется.

Кросс-комипляция - это (например) компилирование linux-программы из-под windows, или наоборот - windows программы под linux.

Насколько я понял, ты пытаешься под линуксом собрать программу для линукса же, а это - самая обычная компиляция. Подожди, пока Dilma выпустит пакет GCC, а я - его модификацию для wxWidgets, тогда может быть можно будет собирать программы под linux.
карма: 1

0
Ответов: 499
Рейтинг: 1
#11: 2007-07-17 06:09:07 ЛС | профиль | цитата
iarspider писал(а):
пытаешься под линуксом собрать программу для линукса же

я пытаюсь из хасма, запущенного под wine, собрать приложение под линукс. это и есть
iarspider писал(а):
компилирование linux-программы из-под windows

для этого и собрал fpc, который являсь win32-приложением дает на выходе приложение под линукс. всякие "hello, world" получаются без проблем, но любой код из хасма несет в себе зависимости от kol-а, который вроде как линукс не поддерживает (хотя автор на сайте выложил
Будущее ядро кода для портирования на платформу Linux. Еще не тестировалось, компилируемо в Delphi с модулем Libc.pas из Kylix.
)
пока не успел попробовать просто консольные приложения, так как решил пересобрать сам fpc, и чего-то тормознул.

iarspider писал(а):
Подожди, пока Dilma выпустит пакет GCC, а я - его модификацию для wxWidgets

для этого, как я понимаю, нужно переписать все компоненты на Си, а это весьма длительный процесс, и даже намеков на некое движение в форуме не встречал ;)
а wxWidgets не привнесет ли огромное раздувание получаемого кода? или будет предполагаться, что необходимые библиотеки будут у пользователя уже установлены?
и сам хасм тогда тоже будет на Си?

iarspider писал(а):
оздать программу, работающую без Wine, не получится.

хорошо. а вместе? то есть используя winelib (содержит WinAPI)? как нибудь прилинковать эту библотеку...
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#12: 2007-07-17 11:16:05 ЛС | профиль | цитата
HikeR писал(а):
то есть, получаемый исходный код ни при каких условиях не может быть портирован? все таки слова "нельзя" и "невозможно" имеют разный смысл

одно и главное условие портирования есть:

iarspider писал(а):
без переписывания всех кодов под платформенно-независимые (или хотя бы истинно-линуксовские) библиотеки создать программу, работающую без Wine, не получится


HikeR писал(а):
и даже намеков на некое движение в форуме не встречал ;)

неверная информация.

HikeR писал(а):
а wxWidgets не привнесет ли огромное раздувание получаемого кода?

скорей всего нет. Почи любой С компилятор заведомо лучше Delphi в силу особенностей языка. Кроме того библиотека достаточно популярна и её все время улучшают. Насколько она дотягивает до KOL незнаю.

HikeR писал(а):
и сам хасм тогда тоже будет на Си?

среда и пакеты это нынче совершенно не связанные паралельно живущие модули. Кто на чем написан им совершенно по барабану.

HikeR писал(а):
хорошо. а вместе? то есть используя winelib (содержит WinAPI)? как нибудь прилинковать эту библотеку...

да, это возможно. Вроде в какой-то версии они выпускали библиотеку для линковки в исполняемый файл с которым программы можно запускать и без Wine. Точнее с ним, но встроенным в саму программу.
карма: 27
0
Ответов: 499
Рейтинг: 1
#13: 2007-07-17 12:56:22 ЛС | профиль | цитата
Dilma писал(а):
HikeR писал(а)
и даже намеков на некое движение в форуме не встречал

неверная информация.

ну тогда это не может не радовать.

Dilma писал(а):
выпускали библиотеку для линковки в исполняемый файл с которым программы можно запускать и без Wine. Точнее с ним, но встроенным в саму программу

угу-угу. только подробное описание использования есть только для проектов на си, а вот для паскаля все еще ищу.

вобщем что интересное получится - попробую рассказать. цель обрисовалась такая: консольное приложение с управлением через конфиги, либо с минимуом диалогов, пока этого достаточно.
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#14: 2007-07-17 13:28:51 ЛС | профиль | цитата
HikeR писал(а):
только подробное описание использования есть только для проектов на си

а чем разница-то под какой язык описание сделано?
карма: 27
0
Ответов: 499
Рейтинг: 1
#15: 2007-07-18 17:24:27 ЛС | профиль | цитата
такс, вот что у меня на текущий момент получилось.
скачал исходники fpc 2.0.4. сначала хотел из под wine их при помощи старого fpc (1.9.6) собрать, хотя бы компилятор. увы, make не сработала (давала какой-то expection на каждом файле), видимо wine ей не нравился.
тогда, начитавшись про кросс-компиляцию (ссылки приводил выше), решил попробовать. тут случился первый облом, ибо я скачивал кучу маленьких пакетов с исходными кодами, а из них под линкусом полный пакет не сделать. пришлось качать один большой файл, размером в два раза больше, и содержащим уже ранее скачанные вещи.
вобщем, получил в итоге fpc-2.0.4, проинсталлировал, стал делать компилятор для винды. все довольно просто и быстро получилось, помимо самого компилятора собрал также и RTL под win32. положил все это в сторонку, установил hiasm 3.63b162, затем поставил fpc из выложенного на сайте архива. автоматическое подключение компилятора не прошло, но все по своим местам разложилось. при попытке ручного запуска ../../hiasm fpc.his из папки с компилятором ошибка повторилась, окошко со страшной надписью OLE error 80040154.
чего не хватает думать не стал, прописал руками.

сразу вопрос. батник make.pas все .ppu и .o кладет рядом с собой, в папку компилятора. я как-то привык при установке сразу запускать этот батник, ибо встречал совет по этому поводу, мол в дальнейшем ускорится процесс компиляции из самой оболочки.
но если проигнорировать это и сразу из хасма скомпилировать пустую форму, то полученные юниты кладутся в Elements/Delphi/code/units. так вот какой путь более правильный?

итак, под wine-ом полученная связка работает, пробежался по примерам, вроде все запускаются. попытался сменить fpc на более свежий. поставил новый hiasm, сделал пустую папку, скопировал туда make.bat и make.pas, решив без оболочки запустить и откомпилировать этот пример. то есть подсовывая отсутствующие компоненты по мере необходимости, так как решил, что в сборке fpc есть немного лишнего.
вобщем, запускал, смотрел на ошибки и добавлял файлики. успел добавить
delphicommctrl.inc win32def.inc COMMDLG.PAS kol.pas
richedit.pas SHELLAPI.PAS SHLOBJ.PAS
и тормознулся на этом:

E:\HiAsm162_new\compiler\FPC>fpc make.pas -Sd -FUunits
Free Pascal Compiler version 2.0.4 [2007/07/18] for i386
Copyright (c) 1993-2006 by Florian Klaempfl
Target OS: Win32 for i386
Compiling make.pas
Compiling kol.pas
Compiling RichEdit.pas
Compiling SHELLAPI.pas
Compiling COMMDLG.pas
Compiling SHLOBJ.pas
kol.pas(19692,10) Warning: Function result does not seem to be set
kol.pas(21152,51) Error: Incompatible type for arg no. 2: Got "FILETIME", expected "LPFILETIME"
kol.pas(21158,51) Error: Incompatible type for arg no. 2: Got "FILETIME", expected "LPFILETIME"
kol.pas(21164,51) Error: Incompatible type for arg no. 2: Got "FILETIME", expected "LPFILETIME"
kol.pas(22094,9) Error: Can't assign values to const variable
kol.pas(22096,16) Error: Can't assign values to const variable
kol.pas(22102,33) Warning: Mixing signed expressions and longwords gives a 64bit result
kol.pas(22169,28) Fatal: Syntax error, ";" expected but "(" found
kol.pas(4,52) Fatal: Compilation aborted

да, кстати, fpc.cfg туда же кинул, а в нем были дополнительные опции: -OG2p3 -Xs -Rintel -Sgic -Xs -l -viwn

ну и соответственно вопрос: чего оно хочет?

почесав голову начесал только одну мысль, KOL довольно старый, да еще и видоизмененный, так как старые сборки FPC с наскоку его не принимали. порылся в инете, увидел, что нынешний KOL довольно спокойно переносит FPC, решил попробовать с ним. текущая версия 2.70, скачал, положил рядом с make.pas вместе со всем, что было в комплекте (предварительно все оттуда убрав), и закоментировал {$DEFINE ASM_VERSION} в delphidef.inc. для успешной компиляции самого KOL-а потребовались еще MESSAGES.PAS, richedit.pas, WINDOWS.PAS

пока все, надо дорогую с работы встретить, и пробовать с олученными юнитами остальное.
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)