当前位置:  技术问答>linux和unix

怎么编译执行C程序的细节问题?

    来源: 互联网  发布时间:2015-05-10

    本文导语:  编译:gcc -o test test.c /*是不是也可以gcc test.c -o test*/ /*生成的test是不是可执行文件?象Windows里的exe?*/ /*为什么没有扩展名呢?没有扩展名,Linux怎么判断它是可执行文件?*/ 运行:./test /*为什么要./test,而不...

编译:gcc -o test test.c

/*是不是也可以gcc test.c -o test*/
/*生成的test是不是可执行文件?象Windows里的exe?*/
/*为什么没有扩展名呢?没有扩展名,Linux怎么判断它是可执行文件?*/

运行:./test

/*为什么要./test,而不是直接test执行呢?*/
/*如果不指定输出文件名,是不是输出文件为a.out*/
/*那怎么执行a.out呢?*/

|
/*是不是也可以gcc test.c -o test*/
y
/*生成的test是不是可执行文件?象Windows里的exe?*/
y
/*为什么没有扩展名呢?没有扩展名,Linux怎么判断它是可执行文件?*/
it has exec mode
运行:./test

/*为什么要./test,而不是直接test执行呢?*/
./ not in PATH
/*如果不指定输出文件名,是不是输出文件为a.out*/
y
/*那怎么执行a.out呢?*/
./a.out

|
编译:gcc -o test test.c

/*是不是也可以gcc test.c -o test*/
可以的
/*生成的test是不是可执行文件?象Windows里的exe?*/
是的
/*为什么没有扩展名呢?没有扩展名,Linux怎么判断它是可执行文件?*/
扩展名你可以自己加上的……也可以不要,这是linux和win的一个区别
可执行文件的判断,呵呵,如果是在linux下,你看到的颜色是绿色的一般是可执行的:)

运行:./test

/*为什么要./test,而不是直接test执行呢?*/
因为你的当前目录没有在系统的env变量的PATH里,这样的话,系统不知道去哪里找可执行文件,指定./就是告诉系统在当前目录下找
/*如果不指定输出文件名,是不是输出文件为a.out*/
是的
/*那怎么执行a.out呢?*/
和test一样啊……
./a.out

|
其他都差不多,我补充两点

/*为什么没有扩展名呢?没有扩展名,Linux怎么判断它是可执行文件?*/
如果你
ls -l
就会看到最左边有权限标志如
         _rwxrw_rw_,分成4组,1,_. 2,rwx. 3,rw_. 4.rw_
第一组表示这个文件的文件标志,c表示字符设备,b表示块设备,d表示目录.普通文件什么都没有.
第二组表示这个文件相对于所有者所具有的权限,r表示只读,w表示写,x表示执行权限(就是可执行文件了).
第三,四组分别表示这个文件相对于这个文件所有者所属组的所有其他人的权限,和不属于这个组的所有其他人的权限.
rwx表示拥有者具有读写执行权限.
gcc编译产生的输出可执行由gcc自动添加了x标志,所以....
你也可以用chmod命令改变权限标志,如,chmod +x test,或chmod 766 test 就是_rwxrw_rw_,可参见man chmod

/*为什么要./test,而不是直接test执行呢?*/
当在shell下直接输入一段字符,会被bash解释为想要执行可执行文件,bash首先在PATH环境变量中寻找这段字符所代表的可执行文件的路径,如果找到就执行,如果找不到就显示不能执行的信息,所以一般用户编译程序所处的目录都不会在PATH中所以需要指定目录./test。

|
./表示执行当前目录下的程序,可以直接执行./a.out

    
 
 

您可能感兴趣的文章:

  • 编译qt-x11,最后编译生成可执行文件时候,make出错
  • 灵异事件啊!重新编译后不能执行。换了下类名却能执行
  • centos 6.2编译出来的可以执行文件,无法在cenos 5.8上执行
  • 用gcc编译完的可执行文件可以双击执行吗
  • 我在windows下把1.c编译成1.exe可以执行,请问我把1.exe拷贝到unix系统能否执行?怎样移植?
  • 我在RedHat中用gcc编译s.c,什么都没产生,也没报错,但是编译a.c的时候就生成可执行文件,这是怎么回事?
  • 关于gcc编译、执行的问题!
  • 程序编译后无法执行!!
  • 怎样实现将资源编译进可执行文件中?
  • 请教:有没有把java编译好的.java和.class文件编译成各个平台下的可执行文件??.exe?着急着急
  • 在linux下用CC编译的程序不能执行
  • 如何编译COFF可执行文件?
  • 我的C程序编译完了,为什么不能执行?
  • linux 如何确定哪个编译器在执行
  • 如何编译执行?
  • 怎么执行已编译的程序
  • 如何把二进制代码编译成可执行文件
  • 编译执行spserver时候遇到的错误,帮忙看看
  • 自编译的helloworld程序不能同时在两个linux系统中执行????
  • 怎样把JAVA编译成可执行程序,用VISUAL AGE或那里有下载的工具
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux/centos源码安装nginx编译配置选项参数介绍
  • 请教:JSP编译器编译成字节码,跟别的编译器编译出来的有什么不同呢?
  • CentOS 6内核升级:下载编译启用新内核版本详细过程
  • 编译GCC时能不能只编译C/C++的编译器?
  • 高速的网络抓包库PF_ring介绍及编译安装
  • 关于arm交叉编译器4.3.3编译程序报错,但是3.4.5却能编译通过的问题
  • JB下,我的程序编译得好慢!请问用什么方法编译才可以快一点?或编译顺序改变一下?
  • 请问gdb是不是只能调试gcc编译的程序,在unix下用其它编译器编译的程序是不是不一定能用gdb调试的?
  • 用JCreator写了一个小程序,有十几个class,当修改某个文件重新编译,javac并没有编译修改的文件,请问要如何做javac才会重新编译所有的
  • 问:关于gcc编译器和g++编译器
  • 嵌入式linux开发:一段代码在windows平台用VC编译运行正常,在linux平台用gcc编译运行正常,但是用arm-linux-gcc编译在嵌入式板子上运行就不正常.
  • 在cygwin编译驱动程序要不要交叉编译?
  • 关于如何把编译进内核的编译成模块
  • C编译器 c++编译器 wieldylcc
  • Linux下gcc编译时,如何以静态链接的形式编译?
  • PROC开发时 //注释编译不通过 如何设置使用cpp编译。
  • 编译失败后如何再继续编译
  • 如何查看已编译安装软件的编译命令行
  • 请问哪里有反编译.class文件的反编译器?
  • 用Jdk编译时出现提示要加 -deprecation 再编译,请教??
  • linux下有没有能编译出16bit代码的C语言编译器?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3