【发布时间】:2013-08-24 20:56:00
【问题描述】:
我遇到了一个奇怪的问题。
(1)我首先通过gcc(版本2.96-110)将模块构建到静态库xxx.a。 xxx.a 中的一些代码是这样的:
const char * const str = “hello world”
void fun()
{
printf(“%s”, str);
return;
}
(2)然后我通过 gcc(版本 2.96-98)将 xxx.a 与我的程序 EXE 链接。在 EXE 中,API fun() 被调用。
(3)当我运行EXE时,输出的是“llo world”,而不是“hello world”。太奇怪了。
是gcc版本不同造成的吗?
【问题讨论】:
-
看起来像 ABI 差异。也许在更高版本上启用了某种堆栈粉碎保护?尝试禁用堆栈保护。
-
可能,但也可能是因为您的 古 GCC 版本中的错误。你知道它是 4.8 版吗?
-
GCC 2.96?您是 1990 年代的时间旅行者吗?
-
我们的产品从 1990 年代开始流行 ^_^
标签: c++ c gcc static-libraries