交叉編譯器找不到頭文件


 

        今天遇到了交叉編譯找不到頭文件的問題,解決方法如下:

 

  • 首先,已知include <>的會在安裝編譯器時指定的路徑下去尋找該頭文件,include ""則會在源文件所在路徑尋找。但由於頭文件之間調用關系復雜,僅僅復制stdio.h到當前路徑並且將<>換為include “”解決不了問題
  • 最后解決方法是將/usr/include/下的所有頭文件都復制到了編譯器尋找頭文件的路徑下
    echo 'main(){}' | arm-poky-linux-gnueabi-gcc -E -v -     //注意,結尾就是一個-,並不是缺失了元素
  • 首先使用上述命令,獲取交叉編譯器搜索頭文件的默認路徑(下方只是節選,請自行找到該段):
#include <...> search starts here:
/opt/fsl-imx-x11/4.1.15-2.0.1/sysroots/x86_64-pokysdk-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include
/opt/fsl-imx-x11/4.1.15-2.0.1/sysroots/x86_64-pokysdk-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include-fixed
End of search list.
  • 接下來就是cp /usr/include/. /opt/fsl-......省略 -r,就ok了
  • 補充:官方頭文件的搜索順序為:通過GCC參數-I指定的目錄;通過環境變量C_INCLUDE_PATH指定的目錄;編譯器的默認目錄。搜索規則是,當不同目錄下存在相同的頭文件時,先搜到哪個就使用哪個


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM