gpt4 book ai didi

c - 是否可以强制将静态库中的字符串包含到链接它的任何可执行文件中?

转载 作者:行者123 更新时间:2023-12-02 03:29:16 25 4
gpt4 key购买 nike

我想将版本字符串放入静态链接库中,并强制将其包含在链接它的任何可执行文件的镜像中,这样我就可以检查镜像(例如使用 strings)并查看版本字符串。

这是否可以使用标准 C 和/或 gcc 而无需专门调整可执行文件的链接选项? (因为调整使用这些静态库的可执行文件的链接很容易忘记/维护起来很乏味......)

看来我已经设法用 C++ 实现了这一点

extern char const * that_version_string;
static char const * const foo_that_version_string = that_version_string;

在库的头文件中。但是 C 不会编译这个:“非常量初始化程序”或类似的东西。

最佳答案

假设库 foo 有一个初始化函数 fooInit必须调用它才能使用该库。然后,在该函数中,放入以下代码。

char const * that_version_string = "Foo 1.0";
char const * this_version_string;

void fooInit( void )
{
this_version_string = that_version_string;

// more initialization code ...
}

一定要在编译库时检查汇编代码,以验证编译器没有优化赋值。它不应该,因为 this_version_string 是一个全局变量,可能会在其他地方使用。

关于c - 是否可以强制将静态库中的字符串包含到链接它的任何可执行文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28117523/

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