LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1670|回复: 10

linux下可执行文件的运行

[复制链接]
发表于 2007-11-6 17:15:20 | 显示全部楼层 |阅读模式
我在debian中编译生成了几个可执行文件
但是在shell中执行是却不能运行,想知道应该从那里入手解决问题:
for example:
我运行可执行文件newfifo
错误如下:

fzhao:/home/# ./newfifo
bash: ./newfifo: cannot execute binary file
发表于 2007-11-6 19:23:09 | 显示全部楼层
chmod +x
回复 支持 反对

使用道具 举报

发表于 2007-11-6 22:15:48 | 显示全部楼层
你是怎么编译的? 把编译命令贴出来看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-7 08:58:29 | 显示全部楼层
编译是这样的:
比如C文件是,test.c
gcc  -o test test.c
生成的文件属性我都改为777了,
不知道问题出在那里,我怀疑我的系统缺什么东西
回复 支持 反对

使用道具 举报

发表于 2007-11-7 12:04:57 | 显示全部楼层
把 file test 的结果帖出来, 另外, 楼主的 /home 分区不会是 fat32 或者 ntfs 格式的吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-7 12:34:44 | 显示全部楼层
执行时就显示不能执行二进制文件。
bash: ./newfifo: cannot execute binary file
与文件所在分区有关系吗?我的分区是FAT32的,放在其他分区也不能执行
是不是gcc安装的问题,或者缺少什么库呢?
回复 支持 反对

使用道具 举报

发表于 2007-11-7 12:54:42 | 显示全部楼层
在 fat32 分区是有可能出现不能执行的情况的, 因为它不具备 linux 要求的权限位格式, 而如果挂载时不注意就会导致程序无法执行. 在 linux 下像 /home 这种本地使用的分区建议都使用 "本土" 的分区.

作为一个测试, 楼主看看是否存在 /dev/shm 这个目录, 存在的话把程序在这个目录执行一下试试. 这个目录是 tmpfs 格式的内存虚拟文件系统, 具备全部的权限位. 或者把程序放到 /bin 目录下加上执行权限再试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-7 14:14:29 | 显示全部楼层
楼上的朋友,我把执行文件放到/dev/shm和/bin目录下都试了,还是不能执行!我就郁闷了,不知道问题出在那里
回复 支持 反对

使用道具 举报

发表于 2007-11-7 15:42:18 | 显示全部楼层
建议楼主把你的环境一五一十的写出来,
然后把你从编辑源代码到运行的整个shell截图贴上来,

啥年代了, 还用fat32? 有不是移动设备
回复 支持 反对

使用道具 举报

发表于 2007-11-8 00:18:07 | 显示全部楼层
你因该按照5楼的方法,看看 file newfifo 的输出结果。

你是不是安装的64位系统,gcc 和内核都是 debian 自带的么?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表