强加库加载顺序

jac*_*hab 5 gcc shared-libraries

我有一个gcc编译的应用程序链接动态库.有没有办法强制加载库的顺序?(在我的例子中,一个库构造函数使用由其他库构造函数设置的资源).

谢谢.

Dou*_*der 5

gcc不负责加载库,或者ld.so在程序加载时自动执行,或者按照@jldupont的建议手动执行.

并且ld.so可能会故意随机化顺序以防止返回到stdlib攻击.

所以要么:

  1. 自己加载库.
  2. 或者删除库加载脚本之间的依赖关系.
  3. 使库本身包含依赖项(可能工作,可能不工作).当您到达链接每个共享库时,请确保它包含-l<dependentlib>在link命令中.您可以通过创建仅与该共享库链接的trival程序来测试它 - 如果它构建并运行,那么该库包含所有必需的从属库.如果ld.so按依赖顺序加载库,这可能会有所帮助 - 我认为它必须这样做.