红联Linux门户
Linux帮助

关于文件扩展名的问题

发布时间:2011-11-05 23:52:20来源:红联作者:chuangjinweilai
看到鸟哥的私房菜里说道,linux文件能不能被执行完全看10属性,与文件名一点关系都没有,在windows下能被执行的文件扩展名通常.com .exe .bat等,而在linux下,只要权限中有x的话,就代表这个文件能被执行。
以上是鸟哥的原话,现在我的疑问出现了,我用vi 编辑了一个名字为 test文件 和一个名字为test.c的文件,这两个文件的内容完全一样,是一个最基本的程序:
#include
main()
{
printf("hello,linux!\n");
}
在用gcc编译两个文件时出现不同了,在编译test.c时,一切正常,但是在编译test 时却发生了问题,不能编译,具体如下:
[root@localhost lili]# gcc test -o test.out
test: file not recognized: File format not recognized
collect2: ld 返回 1
前辈大神们,不是说文件与扩展名没有关系吗?两个文件第权限是完全一致的!如图:
[root@localhost lili]# ll test*
-rw-r--r--. 1 root root 55 11月 5 23:29 test
-rw-r--r--. 1 root root 55 11月 5 23:07 test.c
为什么少了扩展名就不能进行编译了啊?问题在哪里?
文章评论

共有 4 条评论

  1. chuangjinweilai 于 2011-11-06 19:45:57发表:

    擦擦擦,我二了,突然想起来了,我用的是root超级无敌帐号,用普通帐号试了一下就要求可读权限了……

  2. chuangjinweilai 于 2011-11-06 19:44:13发表:

    3# hstking
    恩,我已经试过了,确实是不影响的,所以就有点疑惑了,gcc编译的过程属于对文档的读、写、执行的哪种处理啊?为什么我把文件的权限改成000还是能对源文件进行编译啊?难道还有第四种处理情况?我觉得gcc编译应该是将文件翻译成机器可读格式,这个编译过程应该要求对文件具有可读权限才可以啊,为什么它什么权限都不要求啊?晕……

  3. hstking 于 2011-11-06 14:31:55发表:

    执行和编译不是一回事吧?
    不信,你把编译出来的程序test.out改名成test.in , test , test.c test.cc ..........
    只要是有执行权限,那都是可以执行的。

  4. chuangjinweilai 于 2011-11-06 01:07:25发表:

    [i=s] 本帖最后由 chuangjinweilai 于 2011-11-6 01:09 编辑 [/i]

    在百度上发帖问了一下,有位前辈回帖说,gcc编译跟可执行没什么关系,必须要带.c gcc才能认出是c程序的源代码并进行编译,前辈们,我是非计算机专业的,这个问题对我来说有点复杂了,我的理解gcc本身是不是也是一个程序啊?是什么能够让gcc找到后缀是.c这个文件并进行编译的呢?又比如windows下的office软件为什么能够找到后缀是.doc的文件并打开word文件的呢?如果解释起来比较复杂,希望前辈们能够指点下我要找哪些资料能够了解到相关的知识,小弟万分感谢了!菜鸟的问题很幼稚!菜鸟的路很漫长!前辈们见笑了!