安裝在fedora 16上的gcc是否可以針對不同的CPU進行交叉編譯,比如說SPARC? 我有一定的理解,如果我錯了,需要一些專家來糾正我。不同的操作系統因其訪問內核所使用的系統調用或完全由其使用的內核而異。它是否正確?不同的內核瞭解訪問底層硬件的不同系統調用。二進制文件或可執行文件或程序只不過是一堆系統調用而已。因此每個OS都有自己的可執行文件。一個可執行文件意味着在Windows上運行,而不是在Linux上運行。通過交叉編譯任何windown可執行文件的源代碼,我們可以爲其他操作系統生成可執行文件。 word PLATFORM是指操作系統。 POSIX是類UNIX操作系統的某些設計標準。 我們通常針對不同的操作系統進行交叉編譯。但是我們可以爲不同的硬件交叉編譯嗎?例如,在沒有OS的微控制器的情況下?可以通過gcc針對不同的CPU交叉編譯?
12
A
回答
11
不可以。您不能使用本機(x86)gcc編譯不同架構的程序文件。爲此,你需要一個特定於該處理器體系結構的交叉編譯器-gcc。
您對OS系統調用的理解是正確的。每個操作系統都有自己的一套系統調用,庫被使用。最後這些庫將被翻譯成處理器的機器語言。
每個處理器架構都有自己的指令集架構(ISA)指令集。因此,當用高級語言(如C)編寫的程序被編譯時,它應該從它的ISA轉換成機器語言。這項工作是由編譯器(gcc)完成的。編譯器將只針對一個處理器架構。例如gcc用於x86處理器。所以如果你想在你的x86機器上爲不同的處理器編譯一個編譯器,你應該選擇一個該處理器的交叉編譯器。
2
你將不得不建立這樣一個版本。這是將gcc
移植到新平臺的過程的一部分。您可以構建交叉編譯的版本,然後交叉編譯該版本,然後在新平臺上測試該版本,進行調試,清洗並重復。
相關問題
- 1. GCC可以交叉編譯AIX嗎?
- 2. 針對VxWorks的GCC交叉編譯器無法編譯C++
- 3. 交叉編譯使用GCC
- 4. 針對ARM的交叉編譯x264
- 5. 針對ARM的Nano-x交叉編譯
- 6. 針對MIPS32的gdb交叉編譯
- 7. 針對MIPS架構的交叉編譯
- 8. 交叉編譯針對ARM的WebRTC
- 9. 針對Android的交叉編譯
- 10. QT5.0針對AM1808 ARM9的交叉編譯
- 11. 針對VxWorks交叉編譯Boost 1.40
- 12. 針對power-pc交叉編譯boost庫
- 13. GCC交叉編譯器無法通過void main()測試
- 14. 交叉編譯arm-none-eabi-gcc庫
- 15. 如何安裝gcc交叉編譯器
- 16. 關於arm-eabi-gcc和交叉編譯
- 17. GCC:在Angstrom上交叉編譯(BeagleBone Black)
- 18. 交叉編譯模塊與arm-eabi-gcc
- 19. Buildroot:哪個gcc用於交叉編譯?
- 20. gcc:交叉引用類編譯
- 21. GCC交叉編譯爲i586架構(Vortex86DX)
- 22. GCC 4.9.4交叉編譯器編譯(limits.h中的問題)
- 23. 使用交叉編譯器編譯原生GCC for
- 24. 跳過不兼容libpcap.so - 交叉編譯
- 25. 爲不同的平臺編譯mpirun和mpif90(交叉編譯?)
- 26. 任何人都可以解釋gcc交叉編譯器的命名約定嗎?
- 27. 針對Windows交叉編譯後的創建類的segfault
- 28. 針對mips的交叉編譯驅動程序
- 29. 針對iOS的交叉編譯庫(撲克評估)
- 30. 針對ARM 9處理器的opencv交叉編譯
上一次我需要一個交叉編譯器時,我發現本指南很有用:http://linux.bytesex.org/cross-compiler.html – sarnold
@Saurabh:我寫了一個關於獲取交叉編譯器的小教程Sparc並在Qemu模擬器上運行可執行文件。你可能會覺得它很有用。 :https://www.ee.iitb.ac.in/course/~nehak/SparcQemu.html –