1
4
阿法克,那是不可能的。一般规则是,如果同一个符号出现在两个库中,那么ld.so将优先于首先加载的库。通过确保在任何隐式加载的库之前加载指定的库,ld_preload工作。 因此,一旦开始执行,所有隐式加载的库都将被加载,因此在它们之前加载库为时已晚。 |
2
2
没有干净的溶液,但这是可能的。我看到两种选择:
|
3
1
应该说,在应用程序中尝试从libc替换函数时,根据iso c/posix,无论您是静态还是动态地执行,都有未定义的行为。它可能会工作(并且主要在GNU/Linux上工作),但是依赖它工作是不明智的。如果您只想使用“printf”这个名称,但是让它在您的程序中执行一些非标准的操作,那么最好的方法是
另一方面,如果您的目标是干扰库所做的工作,那么您可能会遇到兼容性问题。如果不重新定义库使用的函数,修补它,并在适当的情况下向上游提交补丁,一个更好的方法可能是找出库为什么不做您想要的事情。 |
4
0
有一个环境变量ld_library_path,链接器在其中搜索碎片库,将您的路径预先设置为ld_library_path,我希望它可以工作。 |
5
0
你不能改变。一般来说,nix链接概念(或者更确切地说是缺乏概念)的符号是从找到它的第一个对象中选取的。(除了Oddball AIX,默认情况下它的工作方式更像OS/2。)
通过编程,你可以尝试
|
6
-2
将dlsym()结果存储在查找表(数组、哈希表等)中。然后
|
CaTx · 使用带有一个大于号和两个大于号的回波的区别 2 年前 |
Ari157 · x86_64 Linux程序集中的逻辑与实现 2 年前 |
Ty Q. · 分段故障GLFW3/GLAD 2 年前 |
ShortArrow · 如何使用git管理链接源文件? 2 年前 |
Bastien L. · 多Linux Grafana集成 2 年前 |