Làm thế nào để tìm ra bộ ba mà không có gcc?


9

Tôi cố gắng tìm ra bộ ba cho thiết bị của mình, vì tôi cố gắng biên dịch chéo , nhưng không có gcc nào được cài đặt trên thiết bị đích và tôi không được phép cài đặt nó.

Với gcc được cài đặt, tôi chỉ có thể viết gcc -dumpmachine

Có thể tìm thấy thông tin này mà không có gcc?


1
bạn sẽ uname -ađi được bao xa
Fiximan

tôi nhận đượcLinux MyDeviceName 2.6.35.3-571-gcca29a0-g8b63513-dirty #162 PREEMPT Tue Aug 4 10:57:29 CEST 2015 armv5tejl GNU/Linux
Đen

1
Bạn có thể cho chúng tôi biết nhà sản xuất và kiểu máy của thiết bị đích chẳng hạn Freescale MX28EVK?
Đánh dấu Plotnick

Không, tôi không thể, nó là một thiết bị nhỏ đặc biệt có vỏ kim loại và không có gì được viết trên đó.
Đen

1
Vì vậy, bạn có một armv5tejllõi, GNU/Linuxlà hệ điều hành, và nếu bạn thực sự cần nhà cung cấp, hãy thử lshw -class cpuvà bỏ qua phần "nên được chạy như siêu người dùng".
Fiximan

Câu trả lời:


6

Bạn có thể nhận được nhiều thông tin bằng cách unamevà cũng bằng cách kiểm tra với fileloại thực thi:

$ 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

Nếu thiết bị của bạn chưa filecài đặt, hãy sao chép tệp thực thi nhị phân từ thiết bị này sang máy tính Linux khác và chạy fileở đó.


Cảm ơn bạn vì câu trả lời. Tôi có thể tìm thấy một thực thi nhị phân ở đâu? Dưới / usr / bin? Xin lỗi, tôi khá nhiều người mới bắt đầu, vì vậy một ví dụ sẽ là tuyệt vời.
Đen

1
Nếu bạn nhận được lệnh tập tin như trong đoạn trích ở trên, bạn có thể sử dụng chính nó làm ví dụ thực thi. Nếu không, bất kỳ tập tin khác trong / usr / bin nên làm.
tinh

2

Bạn sẽ cần tìm các tệp trong hệ thống tệp bảo quản bộ ba được truyền đến / thăm dò theo configurethời gian xây dựng vùng người dùng mục tiêu của bạn.

Trong các bản phân phối GNU / Linux phổ biến, đặt cược tốt nhất sẽ là truy vấn các tệp nhị phân lệnh phổ biến như bash curl make svn. Trong ví dụ sau trên Debian / armhf (QEMU hình ảnh lấy từ đây ) Tôi đã nhận các kinh điển triplet arm-unknown-linux-gnueabihfbằng bash --version. Vì vậy, về cơ bản sẽ an toàn khi định cấu hình chuỗi công cụ chéo của tôi cho hệ thống này /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.

Không có cách nào đáng tin cậy để biết bộ ba phi kinh điển như arm-linux-gnueabihf x86_64-linux-gnutừ Userland, và có thể có các công ước cụ thể phân phối như Debian multiarchcác bộ . Bạn sẽ cần thu thập thông tin từ tài liệu phân phối của bạn hoặc các tài nguyên trực tuyến khác.


Thx cho câu trả lời của bạn, nhưng không may là lệnh "bash" cũng không có sẵn.
Đen

Bạn đang sử dụng bản phân phối nào
Erkin Alp Güney

2

Một lựa chọn khác là make -v. Trong máy tính xách tay của tôi:

$ 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.

Sau đó xây ba là x86_64-pc-linux-gnu.


Hóa ra câu trả lời này là sai. Bộ ba xây dựng là x86_64-linux-gnubất chấp những gì makenói.
Joshua

@Joshua Xin vui lòng đọc này: wiki.osdev.org/Target_Triplet
mja

Hầu hết mọi người cần biết bộ ba hoặc để biết những gì cần vượt qua ./configurehoặc biên dịch chéo một cái gì đó. Khi biên dịch chéo, tên duy nhất có liên quan là tên mà các công cụ chéo sẽ lấy.
Joshua
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.