交叉编译不能加载.so文件的问题
PC系统:Ubuntu 14.04LTS
$ cat /proc/version
Linux version 3.13.0-32-generic (buildd@roseapple) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ) #57-Ubuntu SMP Tue Jul 15 03:51:12 UTC 2014
ARM板子:LeMaker/banana pro
$ cat /proc/version
Linux version 3.4.103 (bananapi@lemaker) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #4 SMP PREEMPT Thu Dec 18 12:55:58 CST 2014
PC使用apt-get安装交叉编译器arm-linux-gcc-gnueabihf-4.8,交叉编译Qt成功移植到板子上但是出现错误 "GLIBC_2_15"not found ,经度娘发现PC交叉编译工具的库比板子的库版本高。
经过多番折腾决定改用其他现成的交叉编译工具,从网上下载了友善之臂的交叉编译工具arm-linux-gcc-4.4.3,又折腾了一番,编译成功,移植到板子上,但是出现error while loading shared libraries: libQtNetwork.so: cannot open shared object file: No such file or directory 怀疑运行环境没有配置对,已经一番折腾配置应该没有错误。
又经过一番折腾,怀疑交叉编译出来的.so文件都不能被加载,于是手动做了一个.os文件试验,如下
------------test.c--------
1 #include "test.h"
2 #include "stdio.h"
3 void ptest(void)
4 {
5 printf("test .so\r\n");
6 }
------------test.h--------
1 #ifndef _TEST_H_
2 #define _TEST_H_
3
4 void ptest(void);
5
6
7 #endif
分别用arm-linux-gcc-gnueabihf-4.8(用apt-get安装的)和arm-linux-gcc-4.4.3(手动安装的)交叉编译了一个.so文件,到板子上写了个程序调用,发现前者是可以运行,后者是error while loading shared libraries: test.so: cannot open shared object file: No such file or directory
用file看一下两个分别是
使用arm-linux-gcc-gnueabihf-4.8编译的.so
libtest.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x661edee8ec8199f8e3e0ec710390fa63018b8487, not stripped
使用arm-linux-gcc-4.4.3编译的.so
libtest.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped
发现后者没有BuildID这个信息,BuildID百度一下没有找到详解,估计出现错误也是因为缺少这个东西。
小弟菜鸟一只,想请个路大神帮忙解答一下