交叉編譯移植常見問題


 解決libc.so.6: version `GLIBC_2.14' not found問題

 

1.試圖運行程序,提示"libc.so.6: version `GLIBC_2.14' not found",原因是系統的glibc版本太低,軟件編譯時使用了較高版本的glibc引起的:

 

 

2.查看系統glibc支持的版本:

  1. [ghui@StuOS bin]$ strings /lib64/libc.so.6 |grep GLIBC_  
  2. GLIBC_2.2.5  
  3. GLIBC_2.2.6  
  4. GLIBC_2.3  
  5. GLIBC_2.3.2  
  6. GLIBC_2.3.3  
  7. GLIBC_2.3.4  
  8. GLIBC_2.4  
  9. GLIBC_2.5  
  10. GLIBC_2.6  
  11. GLIBC_2.7  
  12. GLIBC_2.8  
  13. GLIBC_2.9  
  14. GLIBC_2.10  
  15. GLIBC_2.11  
  16. GLIBC_2.12  
  17. GLIBC_PRIVATE   

 

  1. [ghui@StuOS bin]$ rpm -qa |grep glibc  
  2. glibc-static-2.12-1.80.el6_3.6.x86_64  
  3. glibc-headers-2.12-1.80.el6_3.6.x86_64  
  4. glibc-common-2.12-1.80.el6_3.6.x86_64  
  5. glibc-devel-2.12-1.80.el6_3.6.x86_64  
  6. glibc-static-2.12-1.80.el6_3.6.i686  
  7. glibc-devel-2.12-1.80.el6_3.6.i686  
  8. glibc-2.12-1.80.el6_3.6.i686  
  9. glibc-2.12-1.80.el6_3.6.x86_64  

直接拷貝 工具鏈中的 libc庫到文件系統中即可

 

gcc版本太高導致libbow編譯錯誤的解決方案

 

版本:
arm-hisiv500-linux-gcc (Hisilicon_v500_20170922) 4.9.4 20150629 (prerelease)
bow-20020213


錯誤1:
bow/libbow.h

2128行: array type has incomplete element type(數組類型不完全)
出錯行:
extern struct argp_child bow_argp_children[];
解決:
出錯的原因是不允許在定義之前聲明,將該行注釋,之后在所有提示‘bow_argp_children’未聲明的語句之前加上:
extern struct argp_child bow_argp_children[];

錯誤2: operator '&&' has no right operand(操作符&&缺少右操作數)
在argp/argp-fs-xinl.c和argp/argp-xinl.c兩個文件的第一行加上:
#include <stdio.h>

錯誤3:
error: invalid storage class for function 'grow_if_necessary'('grow_if_necessary'的存儲類無效)
gcc在編譯時不允許static型的函數聲明出現在函數定義中,去掉static即可

錯誤4:
label at end of compound statement(標志出現在復合語句的末尾)
GCC4不允許行標記之后為空,加上空語句";"就可以了,如
  default:
}
改成:
  default: ;
}

 


免責聲明!

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



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