
在使用gcc编程时,没有指定输入可执行文件名,默认生成可执行文件a.out文件。执行时必须键入命令 ./a.out,即要带上扩展名,如果键入./a 则不正确,因为它寻找a这个文件,而不是a.out这个文件。关于这个linux系统的学习,我一直看刘遄老师的书籍《linux就该这么学》。
.out 是 gcc 编译器的输出文件的默认扩展名,并不是可执行文件的扩展名。gcc 可以输出不能运行的文件,但默认还是 .out 。Linux 的可执行文件是基于权限确定的。而不是基于扩展名。
.so是二进制格式的链接库文件,包含链接库源文件(.c)中的各函数实现、调试信息等。.out一般也是由gcc编译生成的二进制格式文件,但有可能是执行程序也可能是链接库文件,因为在linux中扩展名除了一些特殊的约定,一般情况下是无意义的。
执行文件也分动态链接还是静态链接。大多数情况都是动态链接,里面存放源文件(.c)中编译后的二进制代码及所调用函数库的入口参数,静态链接则是all-in-one,就是将所用到的非标准库都打包到执行文件中,所以体积都较大。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)