【发布时间】:2013-07-30 14:00:26
【问题描述】:
如何让 GCC 使用该静态库而不是动态库?通常,您将 .a 文件添加到链接器参数中。但是 libssp 链接是由 -fstack-protector 选项触发的。如果编译器找到共享库而不是静态库,则它更喜欢链接到共享库。
如果我尝试在没有 libssp.so 的系统上运行生成的程序,则该程序将无法运行。
(在某些构建机器上进行系统升级后,测试系统上的旧盒子搞砸了)
【问题讨论】:
如何让 GCC 使用该静态库而不是动态库?通常,您将 .a 文件添加到链接器参数中。但是 libssp 链接是由 -fstack-protector 选项触发的。如果编译器找到共享库而不是静态库,则它更喜欢链接到共享库。
如果我尝试在没有 libssp.so 的系统上运行生成的程序,则该程序将无法运行。
(在某些构建机器上进行系统升级后,测试系统上的旧盒子搞砸了)
【问题讨论】:
有
gcc -static static.c -o static -fstack-protector-all
或
gcc -static -lssp static.c -o static -fstack-protector-all
工作?您可以在生成的二进制文件上运行 ldd 吗?
你使用的是什么版本的 gcc?
【讨论】: