获取已安装程序的编译信息

我需要获取用于构建已安装程序的C编译器的信息。 我猜rt或者lib可以报告,但没有具体的。 并不是程序将安装在/usr/...或类似的地方,因此无法访问构建目录以获取相关信息。

表现良好的程序应该理解--version参数。

打包程序(即在Debian上安装dpkg -iapt-get install.deb软件包等的程序)也知道它们的软件包版本和来源。

您可能会尝试在二进制可执行文件上使用strings 。 但是,这样的元数据(关于用于构建程序的C编译器的版本)可能已被剥离(例如,通过strip命令)。

如果您正在开发程序(即其C源代码)并且可以更改它,您可以考虑添加类似的东西

 timestamp.c: Makefile echo 'const char timestamp[]=' > $@ date +'"built with $(shell $(CC) --version) on %c";' >> $@ yourprogram: $(OBJECTS) timestamp.o $(LINK.c) $(LDFLAGS) $< -o $@ $(LDLIBES) $(RM) timestamp.c 

在你的Makefile (细节可能有误,但你明白了)