C++ 设置sysroot命令与设置solib搜索路径命令
我被命令set solib search path和set sysroot弄糊涂了,不知道什么时候使用它们。在我的例子中,仅当我使用这两个命令时才加载符号。这两个命令都是必需的,每个命令都做什么C++ 设置sysroot命令与设置solib搜索路径命令,c++,c,gdb,C++,C,Gdb,我被命令set solib search path和set sysroot弄糊涂了,不知道什么时候使用它们。在我的例子中,仅当我使用这两个命令时才加载符号。这两个命令都是必需的,每个命令都做什么 在这里,sysroot看起来也在子目录中查找,那么为什么需要solib搜索路径,如果同时搜索库和从这些库加载符号,gdb首先在sysroot(使用绝对路径)中搜索库,然后只有在找不到它们时才搜索到solib搜索路径(具有相对路径) 因此,在使用gdb服务器/远程调试时,您可能只想使用gdb的sysroo
在这里,sysroot看起来也在子目录中查找,那么为什么需要solib搜索路径,如果同时搜索库和从这些库加载符号,gdb首先在
sysroot
(使用绝对路径)中搜索库,然后只有在找不到它们时才搜索到solib搜索路径
(具有相对路径)
因此,在使用gdb服务器/远程调试时,您可能只想使用gdb的sysroot
选项。在使用solib搜索路径的Linux系统上,除非您更改sysroot
的值,否则将无法工作,因为sysroot的默认值是target
,这意味着gdb正在加载so文件在您正在调试的文件系统上找到。这也是gdb的:
设置solib搜索路径
以冒号分隔的目录列表,用于搜索共享库。
“solib搜索路径”在“sysroot”未能找到
库,或者如果库的路径是相对的而不是
绝对值。如果要使用“solib搜索路径”而不是“sysroot”,
确保将“sysroot”设置为不存在的目录以防止GDB
从查找主机的库开始,首选“sysroot”;将其设置为
到不存在的目录可能会干扰自动加载
共享库符号
如本文所述,solib搜索路径的用例是:
solib搜索路径主要用于帮助像Windows这样的目标
不要向调试器报告共享库的完整路径。
GNU/Linux总是使用完整的补丁,例如
“/usr/lib/libjpeg.so.8”
@EmployedRussian,set sysroot和set solib absolute prefix是否相同?我认为它们是相同的。它们是别名:帮助solib absolute prefix
:设置备用系统根。
@EmployedRussian重复的问题不是重复的。solib absolute prefix与solib搜索路径不同。这个问题是“set-sysroot”vs“set-solib搜索路径”。标记为重复的问题是“set-solib搜索路径”vs“set-solib绝对前缀”。您使用绝对路径还是相对路径?请添加传递给set命令的路径示例。