我正在Ubuntu14.04上编译一个库,安装了gcc-arm-linux-gnueabi和g++-arm-linux-gnueabi包。
编译在它遇到的第一个源文件上失败:
/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.当我执行find时,我看到C++头位于:
$ 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已经作为SYSROOT提供了
$ ls /usr/arm-linux-gnueabi
bin include lib添加isysroot无助于:
/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我已经交叉编译了其他平台(如安卓、iOS和Windows )的库,所以我对需要做什么有一个很好的想法。然而,这是我第一次使用arm-linux-gnueabi。
在使用C++包时,包含g++-arm-linux-gnueabi头和库的正确方法是什么?
关联:难道spec文件不应该处理这个问题吗?
编辑:下面是与-v相关的信息。这些内置的小径看起来不健康。看起来,工具链试图形成通往C++头的路径,但它做得不太好:
/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)
...编辑:这看起来像是工具链使用的内部路径中的一个bug。在内置路径中,注意路径中有一个额外的/usr/arm-linux-gnueabi。下面的答案提供了一个解决办法。
向Ubuntu:g++-arm-linux-gnueabi不能用-sysroot编译C++程序。提交的Bug报告。
发布于 2014-09-29 00:14:46
GGC启发:-param展开=100-param heapsize=131072忽略不存在的目录"=/usr/arm-linux-gnueabi/include/c++/4.7.3/usr/arm-linux-gnueabi/include/c++/4.7.3“忽略不存在的目录"=/usr/arm-linux-gnueabi/include/c++/4.7.3/usr/arm-linux-gnueabi/include/c++/4.7.3/arm-linux-gnueabi/sf”忽略不存在的目录"=/usr/arm-linux-gnueabi/include/c++/4.7.3/usr/arm-linux-gnueabi/include/c++/4.7.3/backward“忽略不存在的目录"=/usr/arm-linux-gnueabi/include/c++/4.7.3/usr/local/include/arm-linux-gnueabi”忽略不存在的目录"=/usr/arm-linux-gnueabi/include/c++/4.7.3/usr/include/arm-linux-gnueabi“忽略不存在的目录”=/usr/arm gnueabi/包括/c++/4.7.3/usr/包括“#include”.搜索从这里开始:#包括从这里开始的搜索: /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搜索列表的末尾。C++ (Ubuntu/Linaro4.7.3-12 ubuntu1)版本4.7.3 (arm-linux-gnueabi)
这看起来像是工具链使用的内部路径中的一个bug。在内置路径中,注意路径中有一个额外的/usr/arm-linux-gnueabi。向Ubuntu:g++-arm-linux-gnueabi不能用-sysroot编译C++程序。提交的Bug报告。
为了解决这个问题,应该使用C++显式地添加到-I头的路径。
/usr/arm-linux-gnueabi/include/c++/4.7.3/usr/arm-linux-gnueabi/include/c++/4.7.3/arm-linux-gnueabi在与C++链接时,不需要指定C和--sysroot库,因为选项正确地处理它们。
因此,编译/链接命令看起来类似于:
/usr/bin/arm-linux-gnueabi-g++ ... -mcpu=cortex-m3 -mthumb \
-I/usr/arm-linux-gnueabi/include/c++/4.7.3 \
-I/usr/arm-linux-gnueabi/include/c++/4.7.3/arm-linux-gnueabi \
--sysroot=/usr/arm-linux-gnueabi test.cpp -o test.exehttps://stackoverflow.com/questions/26089563
复制相似问题