2 вопроса о Кросскомпиляции

Вопросы программирования и использования среды Lazarus.

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

2 вопроса о Кросскомпиляции

Сообщение Voltag » 04.04.2008 21:01:44

Здравствуйте
Написал простенькую програмку(прога 3 pas файла)(Консольное приложение). Захотелось перекомпилировать под Linux....
Руководствовался этим:
http://freepascal.ru/article//raznoe/20070512172316/

Задача то у меня простая я сижу под Win32 надо откомпилировать проект для Linux потом я ЭТО переписываю в Целевую систему и тестирую.

Проблема:
Комманда fpc работает.. например выдаёт хелп... но при попытке компиляции RLT(RunTime Lib) у меня выдаёться КУЧА ошибок..
привожу кусок
Код: Выделить всё
Здесь кучка error Makefile
Error makefile 4051 : Command syntax error
*** 911 error during make ***

И получаеться я не могу создать нужную библиотеку а следовательно кросскомпилить мой проект...

И вопрос к знатокам номер 2
В статье указана компиляция 1 файла... но у меня 1 файл *.lpi один *.lpr , 2 бибилиотеки *.pas и ещё кучка pas файлов по работе с сетью(synapse библиотеки), какой файл надо компилировать чтобы получить exe шник? судя по логике lpr, но я не уверен...

(возможно я что-то не понимаю)

Простите за возможно лёгкий вопрос, но я ещё новичёк ответьте пожалуйста, или киньте ссылку где можно посмотреть или ткните в то что я не увидил а надо было читать вниметельнее
Заранее спасибо

С уважением
Voltag
новенький
 
Сообщения: 29
Зарегистрирован: 02.04.2008 03:49:33

Сообщение Sergei I. Gorelkin » 04.04.2008 22:19:53

1) Ошибки при вызове make возникают из-за того, что вызывается не тот make.exe, который нужно. Нужен тот, который лежит в одной папке с fpc.exe (т.е. GNU make). Можно изменить PATH, чтобы он вызывался первым, или же просто найти и прибить все остальные make.exe.
2) Основной файл - тот, в котором первое слово = "program". В данном случае это должен быть .lpr
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1405
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Voltag » 04.04.2008 22:37:36

Спасибо. Сейчас попробую...
Всех поубиваю :twisted:
Voltag
новенький
 
Сообщения: 29
Зарегистрирован: 02.04.2008 03:49:33

Сообщение shade » 05.04.2008 14:29:02

Voltag писал(а):И вопрос к знатокам номер 2
В статье указана компиляция 1 файла... но у меня 1 файл *.lpi один *.lpr , 2 бибилиотеки *.pas и ещё кучка pas файлов по работе с сетью(synapse библиотеки), какой файл надо компилировать чтобы получить exe шник? судя по логике lpr, но я не уверен...

Этот вопрос как раз очень трудный в случае кросскомпиляции win32 -> *nix
т.к. тебе нужны будут библиотеки... вопрос обсуждался на форуме, но к конечному решению, вроде, так и не пришли.

Для начала советую сделать так:
1. создать простой проект - пустую форму
2. и попробовать кросскомпилировать его
3. компоновщик будет ругаться на отсутвие библиотек (например погруется на -lgtk)
4. достаешь devel пакеты из дистрибудива под который будешь комплировать которые содержат требуемые библиотеки и скидываешь их внекоторую папку, путь к которой указываешь через -Fl (для fpc)
5. когда соберешь простой проект, можешь приступать к сборке своего проекта, аналогично выяснишь, какие библиотеки требуются конкретно твоему проекту...

Более ничем помочь не могу :(

Удачи!
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Voltag » 09.04.2008 20:42:08

Здравствуйте.. вобщем вот что получилось.. обьясните что мен для кросскомпилированного счастья не хватает...
сперва пишу что и где у меня стоит потом коммандную строку выведу..
Итак модуль RTL скомпилировался(правда долго компилил)и пихнул я его сюда
Z:\lazarus\units\i386-linux\rtl
там вес всего 4.66 Метра 134 файла
потом компановщик у меня лежит здесь
Z:\lazarus\CompUtil
который включает в себя 5 файлов
i386-linux-ld.exe
i386-linux-ar.exe
i386-linux-objdump.exe
i386-linux-as.exe
i386-linux-strip.exe


теперь точто у меня получилось в коммандной строке без всего
Код: Выделить всё
>fpc -Tlinux sceptics.lpr

E:\!!!Free Pascal\WC Server>fpc -Tlinux sceptics.lpr
Free Pascal Compiler version 2.2.0 [2007/09/09] for i386
Copyright (c) 1993-2007 by Florian Klaempfl
Target OS: Linux for i386
Compiling sceptics.lpr
sceptics.lpr(5,1) Fatal: Can't find unit System used by sceptics //YES
Fatal: Compilation aborted
Error: Z:\FPC\2.2.0\bin\i386-Win32\ppc386.exe returned an error exitcode (normal
if you did not specify a source file to be compiled)


Теперь с дачей RTL
Код: Выделить всё
>fpc -Tlinux -FuZ:\lazarus\units\i386-linux\rtl  sceptics.lpr

E:\!!!Free Pascal\WC Server>fpc -Tlinux -FuZ:\lazarus\units\i386-linux\rtl  sceptics.lpr
Free Pascal Compiler version 2.2.0 [2007/09/09] for i386
Copyright (c) 1993-2007 by Florian Klaempfl
Target OS: Linux for i386
Compiling sceptics.lpr
classes.pp(10,48) Fatal: Can't find unit CustApp used by sceptics//Типа класс не неашёл
Fatal: Compilation aborted
Error: Z:\FPC\2.2.0\bin\i386-Win32\ppc386.exe returned an error exitcode (normal
if you did not specify a source file to be compiled)


Теперь RTL и Компановщик
Код: Выделить всё
E:\!!!Free Pascal\WC Server>fpc -Tlinux -FuZ:\lazarus\units\i386-linux\rtl -FdZ:\lazarus\CompUtil  sceptics.lpr

E:\!!!Free Pascal\WC Server>fpc -Tlinux -FuZ:\lazarus\units\i386-linux\rtl -FDZ:\lazarus\CompUtil  sceptics.lpr
Free Pascal Compiler version 2.2.0 [2007/09/09] for i386
Copyright (c) 1993-2007 by Florian Klaempfl
Target OS: Linux for i386
Compiling sceptics.lpr
classes.pp(10,48) Fatal: Can't find unit CustApp used by sceptics
Fatal: Compilation aborted
Error: Z:\FPC\2.2.0\bin\i386-Win32\ppc386.exe returned an error exitcode (normal
if you did not specify a source file to be compiled)


и он что то не находит!!... чтотакое CustApp не пойму
Что я не то делаю... помогите пожалуйста

С уважением[/quote]

p/s Если получиться обязательно напишу статью... и вышлю сюда, потому что одно из основных достоинств должно лнгко работать...
У меня нет формы у меня консольное приложение но в дудущем собираюсь соединяться с БД и посылать пакеты в сеть(обращатья на порт )
Voltag
новенький
 
Сообщения: 29
Зарегистрирован: 02.04.2008 03:49:33

Сообщение shade » 09.04.2008 21:58:23

Voltag
Тебе нужно
1) перекомпилировать RTL под Linux (сделал)
2) перекомпилировать пакеты FPC под Linux
3) перекомпилировать LCL под Linux
4) binutils ( i386-linux-ld.exe, i386-linux-ar.exe, i386-linux-objdump.exe, i386-linux-as.exe, i386-linux-strip.exe ) должны быть доступны через PATH, т.е. находиться каталоге, который прописан в PATH
5) откомпилированые RTL и пакеты FPC закинуть в какой-нибудь каталог и порисать к ним путь в fpc.cfg...
обо всем этом вроде написано в статье...

* В разделе "Автоматизируй это!" всё на много проще, если нормально приготовлися, то просто make all и тебе сразу всё соберется RTL, FPC и пакеты...

Т.е. сначала проделай все, что написано в статье, а потом можно будет думать об проблеме с компиляцией Lazarus-проектов. Потом, в среди исхдников Lazarus валяется файл /doc/CrossCompile.txt который тоже не помешает почитать.

Скажу более того, если ты все правильно настроешь, то ты сможешь компилировать проекты прям в самом Lazarus, просто в опциях проекта нужно будет указать под какую платформу хочешь компилировать.
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Voltag » 09.04.2008 22:57:53

Спасибо скоро попробую...
Voltag
новенький
 
Сообщения: 29
Зарегистрирован: 02.04.2008 03:49:33


Вернуться в Lazarus

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 45

Рейтинг@Mail.ru