您尚未登录。

楼主 # 2023-07-14 08:58:26

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

请教,交叉编译qt源码时,configure参数里的-rpath和是指的动态链接库的路径还是静态链接库的路径?

交叉编译qt源码时,增加了openssl选项,结果报错。
我选的时-openssl-linked,这是静态连接openssl吧?报错找不到libcrypto.so,提示用-rpath或-rpath-link。
我直接用了-R 库路径,竟然通过编译了。于是好奇 -rpath, -rpath-link, -R的作用。
configure -h时发现有-rpath和-R的选项,看描述,两者相似。没找到-rpath-link描述。
而看描述,前两者是用来制定动态链接库的路径的,而我这里是静态连接库,为何也能其作用?

qt  warning: libcrypto.so.1.1, not found (try using -rpath or -rpath-link)
 -R <string> .......... Add an explicit runtime library path to the Qt
                         libraries. Supports paths relative to LIBDIR.
  -rpath ............... Link Qt libraries and executables using the library
                         install path as a runtime library path. Similar to
                         -R LIBDIR. On Apple platforms, disabling this implies
                         using absolute install names (based in LIBDIR) for
                         dynamic libraries and frameworks. [auto]

最近编辑记录 Gentlepig (2023-07-14 09:02:22)

离线

#1 2023-07-14 09:09:44

哇酷小二
管理员
所在地: 你猜
注册时间: 2020-04-22
已发帖子: 3,387
积分: 1902
个人网站

Re: 请教,交叉编译qt源码时,configure参数里的-rpath和是指的动态链接库的路径还是静态链接库的路径?

建议用 buildroot。





离线

#2 2023-07-14 09:45:59

海石生风
会员
所在地: 深圳
注册时间: 2019-07-02
已发帖子: 650
积分: 783
个人网站

Re: 请教,交叉编译qt源码时,configure参数里的-rpath和是指的动态链接库的路径还是静态链接库的路径?

看选项描述“runtime library path” 即“运行时库路径”自然指的是动态库

离线

楼主 #3 2023-07-14 10:04:28

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

Re: 请教,交叉编译qt源码时,configure参数里的-rpath和是指的动态链接库的路径还是静态链接库的路径?

哇酷小二 说:

建议用 buildroot。

硬件是t113-s3,用的tina sdk。2.0时,有qt选项,但是默认配置编译通不过,按群友的文件修改makefile去掉gpu相关,可以编译了,就是qmake有问题。
这次用了tina sdk 2.1,默认没有qt,只好搜网上教程手动移植。

离线

#4 2023-07-14 11:05:39

真的是很烦
会员
注册时间: 2018-10-08
已发帖子: 155
积分: 147.5

Re: 请教,交叉编译qt源码时,configure参数里的-rpath和是指的动态链接库的路径还是静态链接库的路径?

我的理解是这样的:

正常链接时, app 依赖库A, 而库A又依赖库B 库C, 那么链接APP的时候就需要 -lA -lB -lC 才能找到各个符号
而用了rpath 就可以省事一些, 只需要 -lA, 自动会从rpath指定的路径查找各个依赖的库

rpath 和rpath-link的区别是, rpath会在ELF头里添加一个库搜索路径, 让程序运行时的额外从指定的路径查找库

离线

楼主 #5 2023-07-22 11:57:46

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

Re: 请教,交叉编译qt源码时,configure参数里的-rpath和是指的动态链接库的路径还是静态链接库的路径?

@真的是很烦
但是有个-L是来指定库路径的啊。
-L 库路径
-l 库名称
-I 头文件路径

离线

#6 2023-07-24 09:11:57

真的是很烦
会员
注册时间: 2018-10-08
已发帖子: 155
积分: 147.5

Re: 请教,交叉编译qt源码时,configure参数里的-rpath和是指的动态链接库的路径还是静态链接库的路径?

Gentlepig 说:

@真的是很烦
但是有个-L是来指定库路径的啊。
-L 库路径
-l 库名称
-I 头文件路径

-L是可以指定路径, 但是不会自动搜索需要的库啊
举个小栗子吧
libA 依赖libB, app要调用libA, 链接app时应该是-lA -lB -L./libs
用rpath可以直接指定个 -lA 就行, libA依赖的东西会去指定目录搜索

离线

楼主 #7 2023-07-24 10:18:32

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

Re: 请教,交叉编译qt源码时,configure参数里的-rpath和是指的动态链接库的路径还是静态链接库的路径?

@真的是很烦
谢谢,我再消化下。

离线

楼主 #8 2023-07-31 15:39:43

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

Re: 请教,交叉编译qt源码时,configure参数里的-rpath和是指的动态链接库的路径还是静态链接库的路径?

想将usb口模拟串口使用。
内核配置里选了usb gadaget support里的serial gadaget,配置成了M动态加载驱动。make后usb/gadget目录下有3个.ko文件,g_serial.ko和两个usb相关的.ko。
复制到板子上,执行insmod xxx.ko,结果g_serial.ko报错。原来是adb和usb serial不能同时用。adb功能是根文件系统里配置的,本想去关掉,群友说用setusbconfig none命令即可。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn