静态编译helloworld程序,无法运行

时间:2021-04-27 22:45:09
arm-none-linux-gnueabi-gcc静态编译了helloworld的简单程序;
然后,push到板子上 adb push a.out /data/local/. ;
最后运行root@android:/data/local # ./a.out
显示255|root@android:/data/local #
更改权限chmod 777 a.out也没用
有时候显示sh: ./a.out: No such file or directory
网上查了好多资料和帖子,发现大家静态编译的都是可以的,为什么到我这里就不行了呢,求解答!!!


17 个解决方案

#1


.out可以执行吗?不是可执行文件后缀。。。

#2


引用 楼主 cainiao_learn 的回复:
arm-none-linux-gnueabi-gcc静态编译了helloworld的简单程序;
然后,push到板子上 adb push a.out /data/local/. ;
最后运行root@android:/data/local # ./a.out
显示255|root@android:/data/local #
更改权限chmod 777 a.out也没用
有时候显示sh: ./a.out: No such file or directory
网上查了好多资料和帖子,发现大家静态编译的都是可以的,为什么到我这里就不行了呢,求解答!!!

试试gcc -c HelloWorld.c -o HelloWorld
./HelloWord

#3


交叉编译的环境设置好了没?

#4


引用 2 楼 neustar1 的回复:
Quote: 引用 楼主 cainiao_learn 的回复:

arm-none-linux-gnueabi-gcc静态编译了helloworld的简单程序;
然后,push到板子上 adb push a.out /data/local/. ;
最后运行root@android:/data/local # ./a.out
显示255|root@android:/data/local #
更改权限chmod 777 a.out也没用
有时候显示sh: ./a.out: No such file or directory
网上查了好多资料和帖子,发现大家静态编译的都是可以的,为什么到我这里就不行了呢,求解答!!!

试试gcc -c HelloWorld.c -o HelloWorld
./HelloWord


不用gcc编译吧:
root@android:/data/local # ./HelloWorld                                        
sh: ./HelloWorld: not executable: magic 7F45

#5


引用 3 楼 thefirstz 的回复:
交叉编译的环境设置好了没?


请教怎么设置

#6


引用 3 楼 thefirstz 的回复:
交叉编译的环境设置好了没?


PC上执行arm-none-linux-gnueabi-gcc -v
发现交叉编译器是装好的。
请问还需要其他什么设置吗

#7


引用 4 楼 cainiao_learn 的回复:
Quote: 引用 2 楼 neustar1 的回复:

Quote: 引用 楼主 cainiao_learn 的回复:

arm-none-linux-gnueabi-gcc静态编译了helloworld的简单程序;
然后,push到板子上 adb push a.out /data/local/. ;
最后运行root@android:/data/local # ./a.out
显示255|root@android:/data/local #
更改权限chmod 777 a.out也没用
有时候显示sh: ./a.out: No such file or directory
网上查了好多资料和帖子,发现大家静态编译的都是可以的,为什么到我这里就不行了呢,求解答!!!

试试gcc -c HelloWorld.c -o HelloWorld
./HelloWord


不用gcc编译吧:
root@android:/data/local # ./HelloWorld                                        
sh: ./HelloWorld: not executable: magic 7F45
我只是这么写,你用arm-none-linux-gnueabi-gcc编译不就行了

#8


引用 7 楼 neustar1 的回复:
Quote: 引用 4 楼 cainiao_learn 的回复:

Quote: 引用 2 楼 neustar1 的回复:

Quote: 引用 楼主 cainiao_learn 的回复:

arm-none-linux-gnueabi-gcc静态编译了helloworld的简单程序;
然后,push到板子上 adb push a.out /data/local/. ;
最后运行root@android:/data/local # ./a.out
显示255|root@android:/data/local #
更改权限chmod 777 a.out也没用
有时候显示sh: ./a.out: No such file or directory
网上查了好多资料和帖子,发现大家静态编译的都是可以的,为什么到我这里就不行了呢,求解答!!!

试试gcc -c HelloWorld.c -o HelloWorld
./HelloWord


不用gcc编译吧:
root@android:/data/local # ./HelloWorld                                        
sh: ./HelloWorld: not executable: magic 7F45
我只是这么写,你用arm-none-linux-gnueabi-gcc编译不就行了


不行的,试过了,提示:sh: ./HelloWorld: No such file or directory

#9


请检查你的Makefile,一般有两种可能,一是你的内核中根本就没有这个头文件;二是你的Makefile中的库文件路径没有指定正确,这种情况下建议用库文件的绝对路径来指定。

#10


引用 9 楼 s060403072 的回复:
请检查你的Makefile,一般有两种可能,一是你的内核中根本就没有这个头文件;二是你的Makefile中的库文件路径没有指定正确,这种情况下建议用库文件的绝对路径来指定。


这个程序还需要写Makefile吗?
如果非要写,可以说的详细些吗?何谓“建议用库文件的绝对路径来指定”? 谢谢

#11


这么写的Makefile:
CC = /usr/local/arm-2009q1/bin/arm-none-linux-gnueabi-gcc
hello:hello.o
$(CC) -o hello hello.o
hello.o : hello.c
$(CC) -c hello.c 
clean :  
rm hello.o  
make编译后,将hello文件push到板子上,还是不能运行。请问板子上还需要设置什么吗?

#12


工具链是随便下载的一个还是怎么的,我以前也是从网上下载了一个,编译出来不能执行,最后还是用的厂家体统的工具链

#13


编译环境的问题, 静态编译helloworld程序,无法运行
在linux中,用file命令查看目标文件的类型吧。

#14


引用 13 楼 wenxy1 的回复:
编译环境的问题, 静态编译helloworld程序,无法运行
在linux中,用file命令查看目标文件的类型吧。


hello.out: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.6.14, not stripped

帮忙看看,这样是说明文件是否可以执行呢?

#15


引用 14 楼 cainiao_learn 的回复:
Quote: 引用 13 楼 wenxy1 的回复:

编译环境的问题, 静态编译helloworld程序,无法运行
在linux中,用file命令查看目标文件的类型吧。


hello.out: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.6.14, not stripped

帮忙看看,这样是说明文件是否可以执行呢?

是可执行文件ELF格式。
如果不行,要本原因是编译环境引起的。

#16


$(CC) -o hello hello.o

改成

$(CC) --static -o hello hello.o

即ok

#17


确认开发板上有这个文件吗?

#1


.out可以执行吗?不是可执行文件后缀。。。

#2


引用 楼主 cainiao_learn 的回复:
arm-none-linux-gnueabi-gcc静态编译了helloworld的简单程序;
然后,push到板子上 adb push a.out /data/local/. ;
最后运行root@android:/data/local # ./a.out
显示255|root@android:/data/local #
更改权限chmod 777 a.out也没用
有时候显示sh: ./a.out: No such file or directory
网上查了好多资料和帖子,发现大家静态编译的都是可以的,为什么到我这里就不行了呢,求解答!!!

试试gcc -c HelloWorld.c -o HelloWorld
./HelloWord

#3


交叉编译的环境设置好了没?

#4


引用 2 楼 neustar1 的回复:
Quote: 引用 楼主 cainiao_learn 的回复:

arm-none-linux-gnueabi-gcc静态编译了helloworld的简单程序;
然后,push到板子上 adb push a.out /data/local/. ;
最后运行root@android:/data/local # ./a.out
显示255|root@android:/data/local #
更改权限chmod 777 a.out也没用
有时候显示sh: ./a.out: No such file or directory
网上查了好多资料和帖子,发现大家静态编译的都是可以的,为什么到我这里就不行了呢,求解答!!!

试试gcc -c HelloWorld.c -o HelloWorld
./HelloWord


不用gcc编译吧:
root@android:/data/local # ./HelloWorld                                        
sh: ./HelloWorld: not executable: magic 7F45

#5


引用 3 楼 thefirstz 的回复:
交叉编译的环境设置好了没?


请教怎么设置

#6


引用 3 楼 thefirstz 的回复:
交叉编译的环境设置好了没?


PC上执行arm-none-linux-gnueabi-gcc -v
发现交叉编译器是装好的。
请问还需要其他什么设置吗

#7


引用 4 楼 cainiao_learn 的回复:
Quote: 引用 2 楼 neustar1 的回复:

Quote: 引用 楼主 cainiao_learn 的回复:

arm-none-linux-gnueabi-gcc静态编译了helloworld的简单程序;
然后,push到板子上 adb push a.out /data/local/. ;
最后运行root@android:/data/local # ./a.out
显示255|root@android:/data/local #
更改权限chmod 777 a.out也没用
有时候显示sh: ./a.out: No such file or directory
网上查了好多资料和帖子,发现大家静态编译的都是可以的,为什么到我这里就不行了呢,求解答!!!

试试gcc -c HelloWorld.c -o HelloWorld
./HelloWord


不用gcc编译吧:
root@android:/data/local # ./HelloWorld                                        
sh: ./HelloWorld: not executable: magic 7F45
我只是这么写,你用arm-none-linux-gnueabi-gcc编译不就行了

#8


引用 7 楼 neustar1 的回复:
Quote: 引用 4 楼 cainiao_learn 的回复:

Quote: 引用 2 楼 neustar1 的回复:

Quote: 引用 楼主 cainiao_learn 的回复:

arm-none-linux-gnueabi-gcc静态编译了helloworld的简单程序;
然后,push到板子上 adb push a.out /data/local/. ;
最后运行root@android:/data/local # ./a.out
显示255|root@android:/data/local #
更改权限chmod 777 a.out也没用
有时候显示sh: ./a.out: No such file or directory
网上查了好多资料和帖子,发现大家静态编译的都是可以的,为什么到我这里就不行了呢,求解答!!!

试试gcc -c HelloWorld.c -o HelloWorld
./HelloWord


不用gcc编译吧:
root@android:/data/local # ./HelloWorld                                        
sh: ./HelloWorld: not executable: magic 7F45
我只是这么写,你用arm-none-linux-gnueabi-gcc编译不就行了


不行的,试过了,提示:sh: ./HelloWorld: No such file or directory

#9


请检查你的Makefile,一般有两种可能,一是你的内核中根本就没有这个头文件;二是你的Makefile中的库文件路径没有指定正确,这种情况下建议用库文件的绝对路径来指定。

#10


引用 9 楼 s060403072 的回复:
请检查你的Makefile,一般有两种可能,一是你的内核中根本就没有这个头文件;二是你的Makefile中的库文件路径没有指定正确,这种情况下建议用库文件的绝对路径来指定。


这个程序还需要写Makefile吗?
如果非要写,可以说的详细些吗?何谓“建议用库文件的绝对路径来指定”? 谢谢

#11


这么写的Makefile:
CC = /usr/local/arm-2009q1/bin/arm-none-linux-gnueabi-gcc
hello:hello.o
$(CC) -o hello hello.o
hello.o : hello.c
$(CC) -c hello.c 
clean :  
rm hello.o  
make编译后,将hello文件push到板子上,还是不能运行。请问板子上还需要设置什么吗?

#12


工具链是随便下载的一个还是怎么的,我以前也是从网上下载了一个,编译出来不能执行,最后还是用的厂家体统的工具链

#13


编译环境的问题, 静态编译helloworld程序,无法运行
在linux中,用file命令查看目标文件的类型吧。

#14


引用 13 楼 wenxy1 的回复:
编译环境的问题, 静态编译helloworld程序,无法运行
在linux中,用file命令查看目标文件的类型吧。


hello.out: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.6.14, not stripped

帮忙看看,这样是说明文件是否可以执行呢?

#15


引用 14 楼 cainiao_learn 的回复:
Quote: 引用 13 楼 wenxy1 的回复:

编译环境的问题, 静态编译helloworld程序,无法运行
在linux中,用file命令查看目标文件的类型吧。


hello.out: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.6.14, not stripped

帮忙看看,这样是说明文件是否可以执行呢?

是可执行文件ELF格式。
如果不行,要本原因是编译环境引起的。

#16


$(CC) -o hello hello.o

改成

$(CC) --static -o hello hello.o

即ok

#17


确认开发板上有这个文件吗?