Próbuję skompilować bibliotekę na Ubuntu 14.04 z zainstalowanymi pakietami gcc-arm-linux-gnueabi
i g++-arm-linux-gnueabi
.Właściwy sposób na uwzględnienie nagłówków systemu C++ przy użyciu g ++ - arm-linux-gnueabi?
kompilacji nie powiedzie się na pliku pierwszego źródła napotka:
/usr/bin/arm-linux-gnueabi-g++ -DNDEBUG -g2 -Os -pipe -fPIC -I. -DCRYPTOPP_DISABLE_ASM
-mcpu=cortex-m3 -mthumb --sysroot=/usr/arm-linux-gnueabi -c 3way.cpp
In file included from cryptlib.h:83:0,
from seckey.h:8,
from 3way.h:7,
from 3way.cpp:5:
stdcpp.h:14:18: fatal error: memory: No such file or directory
compilation terminated.
Kiedy wykonać find
widzę że nagłówki C++ znajdują się pod adresem:
$ find /usr -name memory
/usr/arm-linux-gnueabi/include/c++/4.7.3/tr1/memory
/usr/arm-linux-gnueabi/include/c++/4.7.3/memory
/usr/arm-linux-gnueabi/include/c++/4.7.3/ext/memory
...
/usr/arm-linux-gnueabi
jest już dostarczono jako SYSROOT
:
$ ls /usr/arm-linux-gnueabi
bin include lib
dodanie isysroot
nie pomaga:
/usr/bin/arm-linux-gnueabi-g++ -DNDEBUG -g2 -Os -pipe -fPIC -DCRYPTOPP_DISABLE_ASM
-mcpu=cortex-m3 -mthumb -isysroot=/usr/arm-linux-gnueabi/include/c++/4.7.3
--sysroot=/usr/arm-linux-gnueabi -c 3way.cpp
In file included from cryptlib.h:83:0,
from seckey.h:8,
from 3way.h:7,
from 3way.cpp:5:
stdcpp.h:14:18: fatal error: memory: No such file or directory
Mam krzyż skompilowane biblioteki na innych platformach (jak Androidem, iOS i Windows Phone), więc mam dobry pomysł, co należy zrobić. To jest jednak mój pierwszy raz z arm-linux-gnueabi
.
Jaki jest właściwy sposób dołączania nagłówków i bibliotek C++ podczas korzystania z pakietu g++-arm-linux-gnueabi
?
Powiązane: czy plik spec
nie obsługuje już tego?
EDIT: oto niektóre informacje związane z -v
. Te wbudowane ścieżki wyglądają na niezdrowe. Wygląda na to, toolchain próbuje utworzyć ścieżkę do nagłówków C++, ale jej nie robi dobrą robotę:
/usr/bin/arm-linux-gnueabi-g++ -v -DNDEBUG -g2 -Os -pipe -fPIC -DCRYPTOPP_DISABLE_ASM
-mcpu=cortex-m3 -mthumb --sysroot=/usr/arm-linux-gnueabi -c 3way.cpp
...
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "=/usr/arm-linux-gnueabi/include/c++/4.7.3/usr/arm-linux-gnueabi/include/c++/4.7.3"
ignoring nonexistent directory "=/usr/arm-linux-gnueabi/include/c++/4.7.3/usr/arm-linux-gnueabi/include/c++/4.7.3/arm-linux-gnueabi/sf"
ignoring nonexistent directory "=/usr/arm-linux-gnueabi/include/c++/4.7.3/usr/arm-linux-gnueabi/include/c++/4.7.3/backward"
ignoring nonexistent directory "=/usr/arm-linux-gnueabi/include/c++/4.7.3/usr/local/include/arm-linux-gnueabi"
ignoring nonexistent directory "=/usr/arm-linux-gnueabi/include/c++/4.7.3/usr/include/arm-linux-gnueabi"
ignoring nonexistent directory "=/usr/arm-linux-gnueabi/include/c++/4.7.3/usr/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/include
/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/include-fixed
/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/include
End of search list.
GNU C++ (Ubuntu/Linaro 4.7.3-12ubuntu1) version 4.7.3 (arm-linux-gnueabi)
...
Edit: wygląda to na błąd w ścieżkach wewnętrznych stosowanych przez toolchain. W wbudowanych ścieżkach zauważ, że na ścieżce znajduje się dodatkowa /usr/arm-linux-gnueabi
. Poniższa odpowiedź zapewnia obejście tego problemu.
Raport o błędach złożony w systemie Ubuntu: g++-arm-linux-gnueabi cannot compile a C++ program with --sysroot.
Jaki jest Twój procesor cel Używasz kompilator linux, ale -mcpu = cortex-m3, co nie jest bardzo prawdopodobne, aby uruchomić Linuksa na najmniej nie w pełni funkcjonalną wersję. Spójrz na [Buildroot] (http://buildroot.uclibc.org/) i skonfiguruj go dla właściwego celu. – yegorich
@yegorich - dziękuję (zapomniałem o uclib i buildroot). To jest w tej chwili test, więc mogę wybrać dowolny procesor do testowania. Jest to test, ponieważ skupiam się na procedurze, a nie na procesorze. Jaki procesor zalecałbyś dla 'arm-linux-gnueabi'? – jww
Spróbuj użyć '--sysroot/usr' zamiast' --sysroot =/usr'? Masz równe znaki na ścieżkach, które zdecydowanie nie powinny być ... –