Pracuję na oprogramowaniu dla systemu wbudowanego, który nie ma jednostki FPU. Chciałbym móc zbudować to oprogramowanie z biblioteką zmiennoprzecinkową na pulpicie, aby uzyskać bardziej realistyczny obraz wydajności. Czy ktoś ma jakieś pomysły na temat tego, jak to osiągnąć?Soft Float na architekturze x86_64
Do tej pory nie zrobiłem dużego postępu w używaniu -msoft-float
z gcc. Obecnie patrzę na użycie klang. Używając flag -Xclang -msoft-float -Xclang -no-implicit-float
i określając bibliotekę, która ma implementacje procedur miękkiego float, jestem w stanie skompilować moją aplikację. Kiedy próbuję go uruchomić, to zawsze pęka. Jak najlepiej mogę to stwierdzić, dzieje się tak dlatego, że biblioteki, od których zależy ten program, nie zostały skompilowane za pomocą funkcji miękkiego unosu. Aplikacja zależy od gtk, sqlite, expat, gcrypt, wielu wewnętrznych bibliotek i libc.
Chciałbym spróbować dowiedzieć się, jak zbudować kompletne środowisko kompilacji z obsługą miękkiego pływaka. Próbowałem buildroot uclibc i ustawienia CC
i CXX
na binaria klang, ale to nie działało ze względu na wymagania dotyczące kompilowania łańcucha narzędzi gcc (rzeczy takie jak autotools narzeka na niepoprawną wersję kompilatora). Ponieważ chciałbym użyć clang jako kompilatora w nowym buildroot (aby mieć wsparcie dla soft-float), nie widzę pilnej potrzeby budowania gcc. Czy można to zrobić bez gcc?
myślę, że to jest niemożliwe bez zmiany kodu, ponieważ 'x86_64' ABI wymaga' xmm' rejestruje być obecny. Może niektóre sztuczki '-Ddouble = mpfr :: real' zadziałają, używając biblioteki' mpfr', która jest wymagana przez 'gcc'. – hirschhornsalz
Jak już wspomniano, 'clang' był w stanie skompilować plik binarny bez odwołań do instrukcji lub rejestrów zmiennoprzecinkowych. Przypuszczam, że moim prawdziwym pytaniem jest zatem, czy istnieje sposób na wykonanie całego zestawu narzędzi z wykorzystaniem czegoś takiego. –
Czy proponowane rozwiązanie było w porządku? –