怎么在linux下的.C文件中添加文件信息
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么在linux下的.C文件中添加文件信息相关的知识,希望对你有一定的参考价值。
RT,我用GCC编程c和cpp文件,想在用vi创建c或cpp文件时自带文件信息如下:
Filename:(文件名是什么这里就是什么)
Author:zhz
Date:(时间是什么这里就是什么)
Description:(这里空着)
其中上下都以******隔开
你可以把它们作为注解行:
/* ==================================
Filename:prog.cpp
Author:zhz
Date:2014-07-02
Description:
* ==================================*/
或定义为宏
#define __AUTHOR zhz
#define __Description [.......]
可执行文件,运行时显示 源程序名 和 文件建立时间 可以用 宏:
printf("%s %s\n",__FILE__,__DATE__);
__FILE__ 和 __DATE__ 是 gcc 和 MS VC++ 默认的宏。 参考技术B #!/bin/bash
n=$#
#echo $n
i=1
while (( $i <= n ))
do
filename=$!i
#echo $filename
touch $filename
echo "Filename:$filename" >>$filename
echo Author:zhz>>$filename
echo Date:(时间是什么这里就是什么)>>$filename
echo Description:(这里空着)>>$filename
i=`expr $i + 1`
vim $filename
done本回答被提问者采纳 参考技术C cat ~/.vimrc
function Mytitle()
call append(0,"/**********************************************")
call append(1,"Filename:".expand("%"))
call append(2,"Author:zhz")
call append(3,"Date:".strftime("%Y-%m-%d %H:%M"))
call append(4,"Description:")
call append(5,"**********************************************/")
endf
map <F4> <Esc>:call Mytitle()<CR><Esc>:$<CR>
只要按F4键,就能自动在文件头添加备注信息
linux:ranlib 似乎没有将任何新信息添加到存档文件中?
【中文标题】linux:ranlib 似乎没有将任何新信息添加到存档文件中?【英文标题】:linux: ranlib doesn't seem to add any new information into an archive file? 【发布时间】:2016-10-03 12:43:31 【问题描述】:ranlib 的手册页说:
描述 ranlib 生成档案内容的索引并将其存储在档案中。该索引列出了由可重定位目标文件的存档成员定义的每个符号。
好吧,我尝试编译如下存档文件:
$ cat o.c
#include<stdio.h>
int f()
printf("hello\n");
return 2;
gcc -o o.o -c o.c
ar rc libmyobject.a o.o
cp libmyobject.a libmyobject.a.keep
ranlib libmyobject.a
我尝试比较ranlib之前和之后的库文件大小,我得到:
-rw-rw-r-- 1 a a 1626 Oct 3 12:03 libmyobject.a.keep
-rw-rw-r-- 1 a a 1626 Oct 3 12:06 libmyobject.a
它们的大小相同。这出乎我的意料。我希望 runlib 将一些额外的信息存储到 .a 文件中。但实际上,文件大小还是一样的。
那么,ranlib 到底做了什么工作,我如何检查 ranlib 做了什么工作呢? 谢谢。
【问题讨论】:
您为什么希望在这种情况下有所改变?在这两种情况下,索引都是相同的——命令的确定性输出是可取的(我相信你遇到了 binutils 的--enable-deterministic-archives
配置选项)
【参考方案1】:
如果 binutils 使用 --enable-deterministic-archives
编译,则默认情况下,在同一输入源上多次运行 ranlib 将生成相同的输出文件,因为它会将时间戳、uid 和 gid 值归零。
您可以通过传递-U
标志来强制它是非确定性的,这将导致时间戳、uid 和 gid 值的存储,并且因为时间戳会改变文件会有所不同:
$ ranlib -U libmyobject.a
$ diff libm*
Binary files libmyobject.a and libmyobject.a.keep differ
不过,文件 size 将保持不变。
$ ls -l libm*
-rw-r--r-- 1 xx xx 1618 Oct 3 13:58 libmyobject.a
-rw-r--r-- 1 xx xx 1618 Oct 3 13:58 libmyobject.a.keep
请记住,此类工具中的确定性实际上是非常可取的,因为它允许 Reproducible Builds 等功能工作,而无需在构建过程中添加卷积。
【讨论】:
【参考方案2】:使用现代 GNU 工具,我不知道是否真的可以创建没有索引的存档。 ar
默认创建索引,我没有看到不创建索引的选项,也没有看到任何删除它的命令。
在创建存档后在存档上运行ranlib
是为了让您的构建过程在旧的、更古怪的 UNIX 系统上运行。
【讨论】:
以上是关于怎么在linux下的.C文件中添加文件信息的主要内容,如果未能解决你的问题,请参考以下文章