如何同时链接一个三方库的不同版本

yjp
Joey 01月19日 字数 618

在一个aarch64平台上面编译程序,需要依赖liburl,结果链接了一大堆东西,然后依赖

到了libgssapi.so和libgssapi_krb5.so,它们俩还分别依赖不同版本的libkrb5.so

/opt/gcc-arm-8.2-2018.11-x86_64-aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux

-gnu/8.2.1/../../../../aarch64-linux-gnu/bin/ld: warning: libkrb5.so.3,

needed by ../lib/libgssapi_krb5.so, not found (try using -rpath or

-rpath-link)

/opt/gcc-arm-8.2-2018.11-x86_64-aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux

-gnu/8.2.1/../../../../aarch64-linux-gnu/bin/ld: warning: libkrb5.so.26,

needed by ../lib/libgssapi.so, not found (try using -rpath or -rpath-link)

应该如何操作?

4 个回复
hoodlum
hoodlum 01月19日

把那两个依赖不同版本的同一个库的库的代码拿过来,重新编译成

链接到同一个库版本的库。

【 在 yjp (Joey) 的大作中提到: 】

: 在一个aarch64平台上面编译程序,需要依赖liburl,结果链接了一大堆东西,然后依赖

: 到了libgssapi.so和libgssapi_krb5.so,它们俩还分别依赖不同版本的libkrb5.so

: /opt/gcc-arm-8.2-2018.11-x86_64-aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux

: ...................

yjp
Joey 01月19日

这两个库也都是第三方的,依赖关系比较复杂,我也不清楚具体是从哪儿开始分叉的

【 在 hoodlum (hoodlum) 的大作中提到: 】

: 把那两个依赖不同版本的同一个库的库的代码拿过来,重新编译成

: 链接到同一个库版本的库。

fanci
大葡萄 01月20日

提示信息里说 -rpath 或者 -rpath-link?

【 在 yjp () 的大作中提到: 】

: 在一个aarch64平台上面编译程序,需要依赖liburl,结果链接了一大堆东西,然后依赖

: 到了libgssapi.so和libgssapi_krb5.so,它们俩还分别依赖不同版本的libkrb5.so

: /opt/gcc-arm-8.2-2018.11-x86_64-aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux

yjp
Joey 01月21日

基本解决了,是使用的编译器版本过高所致

更换了低版本编译器,不需要链接那么多的库文件也通过了

【 在 fanci (大葡萄) 的大作中提到: 】

: 提示信息里说 -rpath 或者 -rpath-link?