交叉编译应用程序和使用标头错误标头的gcc

时间:2013-03-06 18:45:31

标签: c linux gcc cross-compiling

我正在尝试使用x86-64 Ubuntu上的工具链交叉编译arm7板。我需要的标题在文件系统上:

.../include/<libdir1>
.../include/<libdir2>
[more]
.../include/<libdirN>

但是...... / include目录包含不兼容的标准头文件(由于我无法控制的原因)。使用-I选项会导致gcc使用这些不兼容的标准头而不是它应该使用的头。在此之前包含所有兼容的标准标头路径和-I选项也不起作用。

我想在本机编译时以及arm7板上使用相同的源路径:

#include <libdir1/lib1.h>
#include <libdir2/lib2.h>
...
#include <libdirN/libN.h>

有没有办法使用当前存在的文件系统来执行此操作,还是需要将lib1,lib2,... libN头文件完全复制到其他地方?

1 个答案:

答案 0 :(得分:1)

您可以使用-iquote选项:

  

仅在#include "file"'; they are not searched for #include'的情况下,将目录dir添加到要搜索头文件的目录列表的头部,否则就像-I一样。

因此,您将使用""样式包含指令包含自定义标头:

#include "libdir1/lib1.h"
#include "libdir2/lib2.h"

<>样式的标准标题:

#include <stdlib.h>

然后使用-iquote而不是-I添加目录:

-iquote../include