|
|
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()结果存储在查找表(数组、哈希表等)中。然后
|
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |