Free Pascal i "Hard Float"

0

Ktoś może walczył z tematem "hard float" w przypadku Free Pascal ?

Chciałbym mój soft skompilować na platformę embedded z procesorem TEGRA II.

Dostałem od producenta systemu operacyjnego taką informację:

Calling Convention hard float:
The way floats are passed in subroutine calls can be either in processor registers or
in the floating point coprocessor registers.
The processor register approach is used when gcc is called with -mfloat-abi=softfp or -mfloat-abi=soft
The FPU register approach is used when gcc is called with -mfloat-abi=hard
These two methods are not compatible with each other, all programs and libraries must be compiled
either with softfp/soft or with hard.
Thus all code used with Alpha2 must be recompiled. If you start a program which uses soft calling
convention you will get a 'No such file or directory' error, despite that the file exists and has executable permissions.

Czy FPC wspiera "Hard Float" ?

Do tej pory używałem fpc zbudowanego z takimi opcjami
CPU_TARGET=arm OS_TARGET=linux OPT="-dFPC_ARMEL"

Jak to teraz powinno wyglądać ?

0

Nie jestem pewien czy to dobry trop ale można do fpc dodać takie parametry
-Cfvfpv2 -CpARMv7a

jest jeszcze coś takiego
-dFPC_ARMHF

0
JanKowalski997 napisał(a):

Czy FPC wspiera "Hard Float" ?

Wydaje mi się że twoje pytanie wykracza nieco poza zakres typowego forum programistycznego. Najlepiej zapytaj na mailing listach FPC albo na innych drogach komunikacji z developerami. Oszczędzisz sobie mylących odpowiedzi i nieprecyzyjności, bo nie wydaje mi się aby ktokolwiek tutaj wiedział dużo o metodach wywołań w FPC pod ARM. Od siebie mogę tylko powiedzieć że ostatnimi czasy metoda wywołań na ARM przeszła dosyć spore zmiany, ale nie wiem czy dotyczą one także ciebie.

Zawsze jeżeli masz dostęp do sprzętu, to możesz też sprawdzić różne switche, tylko jeżeli używasz 2.7.1 to bądź uważny bo bodaj jest jakiś błąd floating point pod ARM (zobacz bug tracker).

0

Napisałem na forum lazarus-a może ktoś coś podpowie.

Na razie sam kombinowałem i udało mi się skompilować prostą aplikację i nawet dziala.
Tylko ze jest mały problem bo działa mi tylko prosty program konsolowy ktory jest statycznym programem i nie sa linkowane żadnej biblioteki.

Jak próbuje kompilowac projekt z TForm to niestety aplikacja nie che sie uruchomić
Dostaje komunikat:
project1: “No such file or directory"

1

Napisałem na forum lazarus-a może ktoś coś podpowie.

Czyli jak nie dostać odpowiedzi: Napisać w złym forum. Powodzenia w szukaniu dobrego forum, bo widzę że nie bez powodu zbłądziłeś tutaj.

Tylko ze jest mały problem bo działa mi tylko prosty program konsolowy ktory jest statycznym programem i nie sa linkowane żadnej biblioteki.

Co gdzie jak. Przecież na Win32 każdy program jest linkowany do WinApi itp.

Jak próbuje kompilowac projekt z TForm to niestety aplikacja nie che sie uruchomić
Dostaje komunikat:
project1: “No such file or directory"

Przy aktualnym opisie problemu, mogę powiedzieć że coś skopałeś.

0

Masz rację !
Szukałem forum free pascala ale trochę dziwnie wyglada ich forum wiec nie bylem przekonany ze to dobre miejsce.
Trochę chaotycznie to wszytko opisałem

"Hard Float" jest w przypadku procesorów ARM i LINUX

Skompilowałem sobie prosty program na mojego linux-a

program test;
begin
writeln('test!')
end;

I taki program działa , nawet jak dodałem obliczenia na zmiennym przecinku to wszystko działa OK

Problemy się zaczynają jak aplikacja zaczyna korzystać z zewnętrznych bibliotek
bo wtedy program sie nie uruchamia

Dokładnie to wygląda tak:
./project1
project1: “No such file or directory"

Wiec wygląda to na problem z linkowaniem aplikacji

0

Problemy się zaczynają jak aplikacja zaczyna korzystać z zewnętrznych bibliotek
bo wtedy program sie nie uruchamia

Zależy o jakie zewnętrzne biblioteki ci chodzi.

Jeżeli chcesz używać LCL (w którego skład wchodzi TForm) to musisz mieć do inspektora projektów dodany pakiet LCL. Bez tego będą ci wyskakiwały błędy linkera właśnie.
Generalnie do tworzenia aplikacji wizualnych z LCL służy pierwsza opcja w wyborze nowego projektu, druga to czysta konsola bez LCL.

Wiec wygląda to na problem z linkowaniem aplikacji

Ciekawe jest to dlaczego nie otrzymałeś żadnych błędów. Możesz spróbować pobawić się opcjami w zakładce Opcje projektu->Gadatliwość.

Jeżeli po wykonaniu powyższych kroków będziesz mieć nadal problem to podaj też jaki kod nie działa.

0

Już wszystko działa !
Na ta chwilę to mi wyglada na to że Lazarus ma jakiś problem ze skompilowaniem LCL ,
"myk" polega na zapisaniu ppcrossarm.exe jako fpc.exe :D
Lazarus jak kompiluje LCL dla linux-a nie używa ppcrossarm.exe tylko fpc.exe (w sumie nie rozumiem dlaczego)
wiec mu wymusiłem korzystanie z lepszej wersji kompilator-a ;)

kompilowałem wszystkiego z -dFPC_ARMEL

1 użytkowników online, w tym zalogowanych: 0, gości: 1