Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 设置sysroot命令与设置solib搜索路径命令_C++_C_Gdb - Fatal编程技术网

C++ 设置sysroot命令与设置solib搜索路径命令

C++ 设置sysroot命令与设置solib搜索路径命令,c++,c,gdb,C++,C,Gdb,我被命令set solib search path和set sysroot弄糊涂了,不知道什么时候使用它们。在我的例子中,仅当我使用这两个命令时才加载符号。这两个命令都是必需的,每个命令都做什么 在这里,sysroot看起来也在子目录中查找,那么为什么需要solib搜索路径,如果同时搜索库和从这些库加载符号,gdb首先在sysroot(使用绝对路径)中搜索库,然后只有在找不到它们时才搜索到solib搜索路径(具有相对路径) 因此,在使用gdb服务器/远程调试时,您可能只想使用gdb的sysroo

我被命令set solib search path和set sysroot弄糊涂了,不知道什么时候使用它们。在我的例子中,仅当我使用这两个命令时才加载符号。这两个命令都是必需的,每个命令都做什么


在这里,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命令的路径示例。