QtCreator中的Sysroot的含义及坑

  软件编译过程中用到指定路径的头文件、链接指定路径的库,软件运行过程中需要在该指定路径下寻找相应资源。如gcc指定在/usr/include目录查找头文件,binutils中提供的ld命令从/lib、/usr/lib、LD_LIBRARY_PATH、/etc/ld.so.conf等指定路径进行共享库和静态库连接。交叉编译时需要在本地系统进行编译,而编译出的软件在目标系统运行,这就存在编译时指定的路径和运行时的路径不一致的矛盾。DESTDIR和sysroot配合用于解决这个问题。也就是说如果配置了SysRoot,则程序就会从Sysroot中设置的目录中搜寻库,头文件,如下:

 -lpthread -lz -lcrypto -lssl -lm -ltinyalsa -lstdc++

这样链接库时,如果设置了SysRoot目录,则去SysRoot目录搜寻pthread、rypto、 ssl 、m 、tinyalsa 、stdc++库,而不是去默认的/usr/lib, /lib、/usr/lib、LD_LIBRARY_PATH、/etc/ld.so.conf等指定路径进行共享库和静态库连接。但是要使Sysroot的设置起作用,必须将下图的Shadow build 取消,否则不起作用,从而报这些库找不到的错误

QtCreator中的Sysroot的含义及坑

相关文章:

猜你喜欢
  • 2021-12-18
  • 2021-08-20
  • 2022-12-23
  • 2021-09-28
  • 2022-12-23
  • 2023-01-31
相关资源
相似解决方案