交叉编译:GCC忽略

我正尝试从Linux Mint的64位存储库使用arm-linux-gnueabi-gcc为诺基亚N9手机交叉编译程序(目前为libav的avconv)。 编译器的libc版本是2.15,手机有libc-2.10.1。 它们在数学库中有不兼容性,当我从libav编译并运行avconv程序时,这给了我一个段错误。

我需要编译并链接到较旧的libc版本,但我没有设法使--sysroot选项--sysroot

我做了一个小测试程序,以避免重复配置和编译libav。

arm-linux-gnueabi-gcc --sysroot=/opt/CrossCompilation/NokiaN9/ -o output.sysroot hello.c
arm-linux-gnueabi-gcc -o output.nosysroot hello.c

这两个命令创建一个相同的输出文件 这就是hello.c样子:

#include <stdio.h>
#include <math.h>

int main() {
    printf("Hello, World! Sin = %fn", sin(0.6451));
}

最奇怪的部分是gcc完全忽略了--sysroot选项。 如果我将不存在的目录传递给sysroot,它仍会生成完全相同的输出二进制文件:

arm-linux-gnueabi-gcc --sysroot=/foo/bar -o output.foobar hello.c

它甚至不抱怨任何错误。 有什么问题?


因为在阅读评论之前,我浪费了几天的时间搞这个,我将发布无聊的噪音评论作为答案:

“使用arm-linux-gnueabi-gcc -v运行编译器并查看--with-sysroot arm-linux-gnueabi-gcc -v的值;这是编译器的编译目录,如果你的机器上有这个目录(可能有不同的目录编译器),那么--sroot可能无法工作[;如果你没有看到--with-sysroot ,而是看到--with-libs ,它意味着你的gcc编译时没有--sysroot支持。“

链接地址: http://www.djcxy.com/p/86933.html

上一篇: Cross compilation: GCC ignores

下一篇: arm can't run arm compiled binary