【发布时间】:2014-03-14 17:26:34
【问题描述】:
我需要获取有关用于构建已安装程序的 C 编译器的信息。我猜 rt 或 lib 可以报告这一点,但没有什么具体的。并不是说该程序将安装在/usr/... 或类似位置,因此无法访问构建目录以获取相关信息。
【问题讨论】:
标签: c linux compilation cmake
我需要获取有关用于构建已安装程序的 C 编译器的信息。我猜 rt 或 lib 可以报告这一点,但没有什么具体的。并不是说该程序将安装在/usr/... 或类似位置,因此无法访问构建目录以获取相关信息。
【问题讨论】:
标签: c linux compilation cmake
表现良好的程序应该理解 --version 参数。
打包程序(即那些在 Debian 上使用 dpkg -i 或 apt-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 中(细节可能有误,但你明白了)
【讨论】: