关于linux-g++和arm-linux-g++

首先,二者并不是一个东西,二者所使用的lib是不同的。
arm-linux-g++是交叉编译工具,用于arm板程序设计。对于交叉编译,我的理解就是在宿主机上设计出arm板上的程序,如果不使用qvfb工具,用其编译的二进制可执行文件在pc机上是无法运行的。
linux-g++是编译在pc端可运行的程序,其编译出的二进制可执行文件同样无法在arm板上运行,会提示无法执行二进制文件。

下图是我用file命令查看的一个用arm-linux-g++编译的hello程序,可以看出这是一个动态编译的,在ARM开发板运行程序。
关于linux-g++和arm-linux-g++
下图是 一个用linux-g++编译的affine程序,可以看出这是一个在Intel80386上运行的程序,即我的pc机。
     关于linux-g++和arm-linux-g++

这里稍微提一下的就是,动态编译的程序不是只把可执行文件放到开发板就可以运行的,如果输入./XXX-qws命令,会提示没有XXX可执行文件,基本有两种解决办法:
1,重新编译QT/E,在configure中加上 -static属性,是之成为静态编译。
2,使用arm-linux-readelf -a XXX来查看它的依赖 .so文件,该文件在相应的编译工具lib里有,之后重新 ./XXX-qws会直接提示你缺少哪些头文件,将需要的头文件复制到开发板的lib文件夹下就好。

你可能感兴趣的:(Linux)