Zri*_*rin 5 c static-libraries static-linking
我想将版本字符串放入静态链接库中,并强制将其包含在链接它的任何可执行文件的映像中,这样我就可以检查映像(例如使用strings)并查看版本字符串。
使用标准 C 和/或 gcc 是否可以实现这一点,而不需要专门调整可执行文件的链接选项?(因为调整使用这些静态库的可执行文件的链接很容易忘记/维护起来很繁琐......)
看来我已经成功地在 C++ 中实现了这一点
extern char const * that_version_string;
static char const * const foo_that_version_string = that_version_string;
Run Code Online (Sandbox Code Playgroud)
在库的头文件中。但 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 ...
}
Run Code Online (Sandbox Code Playgroud)
编译库时请务必检查汇编代码,以验证编译器没有优化分配。它不应该,因为this_version_string它是一个可能在其他地方使用的全局变量。
| 归档时间: |
|
| 查看次数: |
187 次 |
| 最近记录: |