我想用cygwin中的嵌入arm gcc編譯器編譯一個SDK。這是一個基於makefile的SDK。我的目標是皮層m3設備。我的問題是,SDK有一個針對目標的自定義libc實現,當我使用arm編譯器(arm-none-eabi-gcc)進行編譯時,它看起來會獲取gnu arm libc,而不是SDK libc。這導致編譯錯誤。我肯定makefile是正確的(我從一臺電腦上覆制並粘貼了整個SDK)。我無法再訪問該計算機來嘗試驗證/比較設置。我不知道如何防止arm gcc編譯器尋找自己的libc實現,而是將其指向正確的實現。任何幫助是極大的讚賞。arm gcc默認編譯它的libc
0
A
回答
0
也許有兩種解決方案:
- 創建特定於工具的環境 - GNU工具鏈採用了一些環境變量的定義默認行爲。對於自定義工具鏈,您需要設置所有必要的變量來覆蓋系統默認值。
使用
-nostdlib
鏈接選項,並明確地將所需的庫和C運行時啓動代碼,讓你的鏈接器命令行可能包括以下內容:-nostdlib -L在/ usr/myarmtools/GCC/lib目錄 - LC的crt0.o
注意-nostdlib
抑制的libc中的libstdC++和crt0.o中默認的鏈接,所以你必須向圖書館提供搜索路徑(-L),或明確它們的完整路徑和文件將它們鏈接名稱並鏈接您的目標的C運行時目標代碼。
我使用選項2的偏好,因爲它可以在任何環境中工作。但是,如果您希望使用通用makefile來構建多個目標,則選項1可能會有用。
相關問題
- 1. ARM-GCC編譯錯誤21
- 2. GCC認爲在ARM
- 3. 爲什麼uboot使用arm-linux-gcc作爲默認arm CROSS_COMPILE?
- 4. 交叉編譯arm-none-eabi-gcc庫
- 5. ARM GCC編譯錯誤(Windows 7)
- 6. 爲arm-gcc編譯器安裝庫
- 7. 關於arm-eabi-gcc和交叉編譯
- 8. 交叉編譯模塊與arm-eabi-gcc
- 9. ARM下有gcc編譯器嗎?
- 10. 由arm-gcc編譯器編譯的c代碼的頭文件
- 11. 沒有libc編譯
- 12. 如何覆蓋setup.py默認使用的編譯器(gcc)標誌?
- 13. arm-linux-gcc vs arm-elf-gcc
- 14. 使用非主libc編譯(即eglibc,uClibc)
- 15. 默認的Python編譯器
- 16. 我如何設置默認對齊的變量與arm gcc
- 17. 如何在Linux上使用另一個libC進行編譯? (gcc)
- 18. 用c89和c99編譯gcc 4.4.2默認爲c99嗎?
- 19. 什麼默認庫同時編譯C項目,GCC
- 20. ARM GCC內嵌彙編
- 21. GCC錯誤在編制ARM
- 22. 使用Code Sourcery編譯GCC
- 23. 鏈接libC++編譯提升
- 24. Clang 3.1 + libC++編譯錯誤
- 25. cmake和默認編譯器
- 26. 編譯默認使用int64
- 27. Java默認編譯目錄
- 28. Android GCC編譯器更改
- 29. 默認GCC架構
- 30. 編譯器arm-none-eabi-gcc v4.9.3優化對指針的操作
也許你的SDK在某個地方設置了一個腳本,它將所有環境變量設置爲與gcc交叉編譯器一起使用。一些你必須使用'source setup environment'啓動的東西。這將設置工具鏈參數,sysroot等... – LPs