gpt4 book ai didi

c++ - 在链接时插入字符串

转载 作者:行者123 更新时间:2023-11-30 18:23:26 25 4
gpt4 key购买 nike

我想定义程序使用的外部全局符号(const char*)。在链接时添加带有给定值的符号。这对于提交哈希或构建时间很有用。

我发现--defsym它还有其他作用。 Go 链接器通过 -X 选项支持此功能。 (是的,我知道,Go 字符串是托管的,但我说的是普通的旧零终止 C 字符串)

例如:

extern const char *git_commit;

int main(int argc, char *argv[]) {
puts(git_commit);
return 0;
}
gcc main.o -Wl<something here that adds git_commit and set it to '84e5...'>

我知道 config.h 方法和构建包含这些字符串的对象文件。但据了解,现在已经是 2019 年了。如此简单的任务应该很容易。

编辑更精确的问题gcc/binutils 中是否有与 Go Linker 的 -X 选项等效的选项。

最佳答案

在编译/预处理时进行更改,请考虑以下内容:

#include <stdio.h>

const char * git_commit = GIT_COMMIT;

int main(int argc, char ** argv) {
puts(git_commit);
return 0;
}

在命令行中:

gcc -o test test.c -DGIT_COMMIT="\"这是一个测试\""

假设您使用的是 GCC 编译器。

关于c++ - 在链接时插入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56075611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com