linux下如何运行可执行文件

本人在虚拟机下用gcc编译了一个程序,可无法执行,请问什么原因,没有任何提示
文件名中没有任何扩展名.运行的方式是双击,以及在命令行下操作,均不可以,不知道是为什么,哪位高手指点一下,谢谢
另:linux的shell下运行可执行文件的方式是不是跟windows下一样,也就是直接输入文件名就可以???

1、打开kali linux的终端。创建一个文件并命名为dutest.c。在终端输入:touch test.c。


2、可以看到已经生成了一个后缀为test.c的源文件。然后用vim工具打开这个文件并编写代码。在终端中输入:vim test.c或者gvim test.c打开这个文件并编写代码。


3、编写完了这个代码。现在开始编译源文件。在终端中输入:gcc test.cgcc是linux自带的c语言编译器。如果是windows则要用ide工具来编译。linux系统一般写C语言用gcc +vim+gdb三个自带的工具就可以了。


4、打完gcc test.c编译完C源文件。然后就可以看见a.out的文件。一般linux系统就默认为a.out为编译完的文件。现在运行a.out文件。在a.out文件的目录下打开终端并输入./a.out就是运行文件了。


5、如果想要编译完的文件名不要用a.out文件。就可以在编译时打入.gcc test.c -o test.out然后就可以看见有一个test.out.文件 了。-o后面跟着的编译生成的文件名。

6、再运行test.out在终端中输入./test.out结果如图。这样在linux系统下编译并运行C语言就完成了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-08-15

以ubuntu系统为例:

1,首先去运行perl-v命令查看您的linux系统上面是否安装了perl工具,如果已安装的话,会输出版本号,如果没有安装,则安装perl。sudo apt-get install perl

2,使用cd命令切换到安装的目录下cd xxxx/ xxxx

3,执行pl文件sudo ./xxxxx.pl


扩展资料

Perl,一种功能丰富的计算机程序语言,运行在超过100种计算机平台上,适用广泛,从大型机到便携设备,从快速原型创建到大规模可扩展开发。

Perl借取了C、sed、awk、shell脚本语言以及很多其他程序语言的特性,其中最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。

简而言之,Perl像C一样强大,像awk、sed等脚本描述语言一样方便,被Perl语言爱好者称之为“一种拥有各种语言功能的梦幻脚本语言”、“Unix中的王牌工具”。

本回答被网友采纳
第2个回答  2007-09-15
linux 的文件系统
linux环境中文件具有非常重要的意义,因为linux里的一切事物都是文件!
这就意味着在一般情况下,程序完全可以象对待文件那样对待磁盘文件、串行口、打印机以及其他设备。只要5个基本的函数就足以应付大多数问题,它们是open(打开一个文件或设备)、close(关闭一个文件或设备)、read(从一个打开的文件或设备里读数据)、write(写入一个文件或设备) 和 ioctl(把控制信息传递到设备驱动程序)。

一个程序开始运行的时候,一般会有3个文件描述符已经为它打开了,它们是:
0、标准输入
1、标注输出
2、标准错误

1、write系统调用
#include
size_t write(int filedes, const void *buf, size_t nbytes);
把缓冲区buf里的前nbytes个字节写入文件描述符filedes相关联的文件,并返回实际写入字节个数,-1表示出现了错误,对应的错误代码保存在全局变量errno里面。注:nbytes最好不要超过buf的大小,否则可能会出现不可预料的结果。
例1:在标准输出上显示一条信息
//write.c
#include
#include
int main()
{
if ((write(1,"hereis somedata\n",17))!=17)
write(2,"a write error has occurred\n",28);
exit(0); //exit()定义在stdlib.h中
}

$ gcc write.c -o write
$ ./write
hereis somedata

2、read系统调用
#include
size_t read(int filedes, const void *buf, size_t nbytes);
从文件描述符filedes相关联的文件里读人nbytes个字节的数据,放到数据区buf里。返回实际读入的字节数。

例2:截取标准输入的前128字节输出出上。
//read.c
#include
#include
int main()
{
char buffer[128];
int nread;
nread=read(0,buffer,128);
if(nread==-1)
write(2,"a read error has occurred\n",27);
if ((write(1,buffer,nread))!=nread)
write(2,"a write error has occurred\n",28);
exit(0);
}

[root@localhost c]# echo hello there| ./read
hello there
[root@localhost c]# ./read < read.c
#include
#include
int main()
{
char buffer[128];
int nread;
nread=read(0,buffer,128);
if(nread==-1)
write([root@localhost c]#

3、open系统调用
#include
#include
#indlude

int open(const char *pathname, int oflags);
int open(const char *pathname, int oflags, mode_tmode);
open函数操作成功,将返回一个文件描述符。pathname文件路径,oflags打开方式,mode_tmode权限。

oflags:
O_RDONLY 以只读方式打开
O_WRONLY 以只写方式打开
O_RDWR 以读写方式打开
O_TRUNC 把文件长度设置为零,丢弃其中现有的内容
O_CREAT 按mode中给出的访问模式创建文件
O_EXCL 与O_CREAT一起使用,确保调用着创建出文件来。

mode_tmode:
S_IRUSR 读权限,文件属主
S_IWUSR 写权限,文件属主
S_IXUSR 执行权限,文件属主
S_IRGRP 读权限,文件所在分组
S_IWGRP 写权限,文件所在分组
S_IXGRP 执行权限,文件所在分组
S_IROTH 读权限,其他用户
S_IWOTH 写权限,其他用户
S_IXOTH 执行权限,其他用户

umask变量
umask 用户掩码,由3个八进制数字组成,分别对应着用户、分组和其他用户。
用户 分组 其他用户
R W X R W X R W X
R禁止读 W禁止写 X禁止执行

open调用中的mode 实际上是权限的申请,所申请的权限是否会被设置还有取决于umask 在程序运行时取的值。
打个比方,如果用户设置了自己的环境为“不准创建允许其他用户有写权限的文件,即使创建该文件的程序提出申请也不行。”但这样做并不会影响某个程序或用户在今后使用chmod命令(或者在程序中使用chmod系统调用)添加其他的权限。

4、creat系统调用
#include
#include
#indlude
int creat(const char *pathname, mode_tmode);
此函数相当于open(pathname, O_WRONLY|O_CREAT|O_TRUNC,mode);

5、close系统调用
#include
int close(int filedes);
文件描述符filedes被释放。返回0:操作成功,返回-1:操作失败。

6、ioctl系统调用
#include
int ioctl(int filedes, int cmd, ...);
ioctl调用有点像是个大麻袋。它提供了对设备行为、设备描述符、设备底层服务的配置工作等方面进行控制的操作接口。具体细节需查阅各设备的使用手册。

更多参考资料:http://www.5linux.com
第3个回答  推荐于2017-11-24
虚拟机?
我没有试过虚拟机下编译的.

我以前学C和C++时就是在linux下编译的,都可以运行.
你先确定编译是否成功.看看编译是的信息.

linux下可执行文件,如果是在/bin或者/usr/bin 里头,就直接敲文件名就可以运行.

如果是在其他文件夹里,比如说运行/root里头的 time文件

你就 cd /root
再 ./time本回答被提问者采纳
第4个回答  2019-02-11
文件无法删除,可能是因为权限问题。
使用命令:
rm
选项添加
-f
是强制删除。
因此可以使用
rm
filename
-f
如果是删除某个目录下的所有文件,使用:
rm
/home/func/
-rf
或者
rm
/home/func
-rf
可以查看
man
rm
相似回答