没有gcc如何找出三元组?

没有gcc如何找出三元组?

我试图找出三联体对于我的设备,因为我尝试交叉编译,但目标设备上没有安装 gcc,并且不允许我安装它。

安装了 gcc 后我可以写gcc -dumpmachine

没有gcc可以找到这些信息吗?

答案1

uname您可以通过检查file可执行文件的类型来获取大量信息:

$ gcc -dumpmachine
x86_64-linux-gnu
$ uname -o -m
x86_64 GNU/Linux
$ file /usr/bin/file
/usr/bin/file: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=d8ac02806880576708bf189c064fca78ea89f1d0, stripped

如果您的设备尚未file安装,请将二进制可执行文件从该设备复制到另一台 Linux 计算机并file在那里运行。

答案2

您需要在文件系统中找到保留在configure目标用户空间的构建时间传递给/探测的三元组的文件。

在常见的 GNU/Linux 发行版中,最好的选择是查询常见的命令二进制文件,例如bash curl make svn.在下面的例子中Debian/armhf(QEMU 图像取自这里) 我拿到典范三胞胎arm-unknown-linux-gnueabihfbash --version.因此,通过 为该系统配置我的交叉工具链基本上是安全的/path/to/configure --target=arm-unknown-linux-gnueabihf

root@debian-armhf:~# bash --version
GNU bash, version 4.2.37(1)-release (arm-unknown-linux-gnueabihf)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

没有可靠的方法可以arm-linux-gnueabihf x86_64-linux-gnu从用户区了解非规范三元组,并且可能存在特定于发行版的约定,例如 Debian多架构元组。您需要从您的发行版文档或其他在线资源中收集信息。

答案3

另一种选择是make -v。在我的笔记本电脑中:

$ make -v 
GNU Make 4.1
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

然后建三重就是x86_64-pc-linux-gnu

相关内容