QtCreator中的Sysroot的含义及坑

本文探讨了如何通过DESTDIR和sysroot在软件编译和运行时解决路径不一致的问题,重点讲解了如何配置sysroot来指定资源搜索路径,以及取消Shadowbuild设置的重要性。

  软件编译过程中用到指定路径的头文件、链接指定路径的库,软件运行过程中需要在该指定路径下寻找相应资源。如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 取消,否则不起作用,从而报这些库找不到的错误

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值