TUSSON 发表于 2013-3-25 17:59:16

动态链接的程序无法在ARM板上执行

我在Ubuntu上安装了arm-linux-gnueabi-gcc
并用C写了一个简单的helloworld程序
#include <stdio.h>
int main(void)
{
   printf("hello world\n");
   return 0;
}
保存为 hello.c
使用静态链接编译(arm-linux-gnueabi-gcc -static hello.c)产生的程序放到ARM板子上(linux mele 3.0.42)能正常运行
使用动态链接编译(arm-linux-gnueabi-gcchello.c)产生的程序不能执行
同样是用putty的pscp把程序传到目标板,动态链接的程序传到目标板上时不具有可执行属性
我尝试执行
chmod +x a.out
./a.out
结果显示
bash: ./a.out: No such file or directory

hipboi 发表于 2013-3-25 18:28:51

cubieboard上的ubuntu是arm hf的,交叉编译的话,使用 arm-linux-gnueabihf-gcc

主机上 使用 sudo apt-get install gcc-arm-linux-gnueabihf 安装

不建议给cubieboard交叉编译,因为cubieboard一旦安装了系统,它就是一个独立的计算机,可以直接在cubieboard上本地编译程序。

Henry_Wu001 发表于 2013-3-26 09:19:14

to TUSSON:
动态编译不通过,说明bin文件所需的链接板子上的库里没有。

to hlpbol:
能说说这2个 编译器的差异吗,在何种情况下使用?

hipboi 发表于 2013-3-26 11:17:14

Henry_Wu001 发表于 2013-3-26 09:19 static/image/common/back.gif
to TUSSON:
动态编译不通过,说明bin文件所需的链接板子上的库里没有。



请使用“回复”功能,并且id是hipboi,不是hlpbol

这个两个编译器的差异在于armhf是硬件浮点,对于浮点运算是使用vfp来传递参数,原来的是用arm寄存器传递参数。armhf在一些浮点运算大的程序上甚至能获得200%的性能提升。可以参考:

http://wiki.debian.org/ArmHardFloatPort

emouse 发表于 2013-6-20 14:51:11

hipboi 发表于 2013-3-25 18:28 static/image/common/back.gif
cubieboard上的ubuntu是arm hf的,交叉编译的话,使用 arm-linux-gnueabihf-gcc

主机上 使用 sudo apt-get ...

如果纯粹折腾玩玩的话直接板子上搞没啥问题,现在想用来做点开发,直接在板子上效率还是很低的。

sun_richard 发表于 2013-6-30 17:18:05

想问下楼主是怎么解决的?我也遇到同样的问题,而且我看lib里动态链接库都有。

TUSSON 发表于 2013-6-30 21:37:04

sun_richard 发表于 2013-6-30 17:18 static/image/common/back.gif
想问下楼主是怎么解决的?我也遇到同样的问题,而且我看lib里动态链接库都有。 ...

主机上换成gcc-arm-linux-gnueabihf
页: [1]
查看完整版本: 动态链接的程序无法在ARM板上执行