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

标签 c linux compilation cmake

我需要获取有关用于构建已安装程序的 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 中(细节可能有误,但您明白了)

关于c - 获取已安装程序的编译信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22411837/

相关文章:

在同一进程中和两个进程之间将字符串从一个指针复制到另一个指针

c++ - 在 Windows 中使用 cygwin 编译 ncmpcpp

c - Linux CPU 隔离和互斥

linux - 如何摆脱 bash 中的 "no access to tty (Bad file descriptor)"消息?

带有条件编译的c++ header 包含顺序

compilation - Netbeans : move a text file into dist folder when compiling

python - Haskell、python 和 c 中的函数之间的主要区别是什么?

将PEM格式的x509证书转换为Openssl的x509结构格式

c - 哪个定义更好?

linux - 汇编和多核有什么关系?