Jestem cross kompilacji przy użyciu Qmake i QtCreator. W ustawieniach zestawów (ustawienia toolchain i qmake są tam ustawione) znajduje się pole o nazwie Sysroot:
. (Example here)Do jakiego polecenia w Makefile robi się "Sysroot" z transferu QtCreator?
Od Qt Creator i QMake są na końcu, odpowiedzialny za generowanie Makefile, moje pytanie jest, do czego służy ta opcja tłumaczyć w Makefile i jak to przejdzie do toolchain?
Motywacja na pytanie
mam Sysroot:
skierowaną ~/path-to-sysroot
. ~/path-to-sysroot
zawiera zwykłą krzyżową strukturę sysroot skompilowaną dla osadzonego celu.
~/path-to-sysroot
├── bin
├── include
├── lib
├── sbin
├── share
└── usr
Kiedy próbuję przekroczyć skompilować jakiś kod, który zależy od bibliotek w ~/path-to-sysroot/usr/lib
, nie jest on z wiadomości, że libs brakuje, ale nie w tytule. Przetworzyłem wygenerowany plik Makefile i nie znaleziono żadnych śladów po ~/path-to-sysroot/usr/lib
.
Prawdopodobnie skończy się jako opcja '--sysroot' na GCC lub jest skompilowany bezpośrednio do łańcucha narzędzi (tak, że nie trzeba go określać). Jaki komunikat błędu otrzymujesz dokładnie? Czy udało ci się wyśledzić komendę kompilacji w wygenerowanym pliku makefile i co ona mówi, jeśli tak? (Łatwym sposobem debugowania jest wciśnięcie Ctrl-C podczas kompilacji z powłoki i zobaczenie, gdzie dostaniesz błąd, jeśli jesteś na * nix.) – Ulfalizer
Czy sam zbudowałeś Qt? Miałem wiele bólów głowy, próbując poprawnie zbudować Qt, abyśmy mogli skompilować krzyżowo dla ARM. Uruchom 'qmake --query' i sprawdź, czy sysroot jest poprawny na wyjściu tego polecenia. Niektóre ścieżki są automatycznie konfigurowane dla qmake - podejrzewam, że są one zakodowane na stałe w qmake jako domyślne, ale można je przesłonić (używając innej formy polecenia 'qmake'). – Steve
@Ulfalizer Mówi, że brakuje pliku nagłówkowego biblioteki. Kończenie jako '--sysroot' było czymś, co miałem nadzieję znaleźć w Makefile. Nie widać, w jaki sposób ustawienie określone w QtCreator można skompilować w łańcuchu narzędzi. – TheMeaningfulEngineer