linux系统文件扩展名学习

linux系统下的扩展名并不能标识该文件是属于哪一种类型的文件。
文件是否可以执行等都跟文件的扩展名无关。

因为文件script没有执行权限,所以也就无法执行,
sh-3.2# touch ./script
sh-3.2# ls -lh ./script
-rw-r--r-- 1 root root 0 Dec 28 06:15 ./script
sh-3.2#
sh-3.2# ./script
sh: /script: Permission denied
sh-3.2#
sh-3.2# chmod 755 ./script
sh-3.2# ./script
sh-3.2# echo $?
0
sh-3.2#

在linux系统中,虽然扩展名也和具体的程序相关联。
但文件是否可以执行却是跟扩展名无关的。
也许这种关联是为了管理上的方便吧?

linux系统下常见的扩展名有:
.sh,通常用来表明这个文件是一个shell script文件;
.so(shared object),共享库文件,这和windows系统下的dll很像,它可以在程序运行时动态装载;
.ko(kernel object),这是从linux内核版本2.6之后才有的,它又通常被称之为模块(module);
.o,即编译某个源文件所生成的目标文件;
.a,即静态库文件,它会在编译阶段就被打包到可执行程序中;

linux系统支持.so和.ko,所以它使得模块化变得简单。
那要如何根据需要编译出自己的.so或.ko?
这就要看Makefile文件怎么写了,要透过Makefile向编译器(gcc)传递正确的编译参数,
这样编译器就会根据用户的需求编译出对应的文件。
比如在Makefile中向编译器指定-shared参数,那编译器就知道用户是需要编译一个
.so档案出来。
简言之:
编译器最终的输出结果是由Makefile中的配置决定的;
Makefile是由用户根据需要设定的。

gcc的命令行参数有:
链接选项、优化选项以及c语言选项等等。

软件=程序+文档,
程序=算法+数据结构

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值