如何解决交叉编译共享时出错,这取决于另一个所以
我正在尝试为基于 arm 的系统交叉编译我的应用程序。
我以下列方式编译了 2 个库:
$ gcc -shared --sysroot=$DIR_PATH -o $LIBPATH/libfoo.so foo.o
$ gcc -shared --sysroot=$DIR_PATH -o $LIBPATH/libbar.so bar.o
编译了第三个库:
gcc -shared -o $LIBPATH/libfoobar.so --sysroot=$DIR_PATH -L$LIBPATH -Wl,rpath=$RUN_TIME_PATH foobar.o -lfoo -lbar
最后我编译了一个二进制文件:
gcc -o app --sysroot=$DIR_PATH -L$LIBPATH -Wl,rpath=$RUN_TIME_PATH app.o -lfoobar
但是在编译应用程序时我得到
warning: libfoo.so,needed by libfoobar.so,not found (try using -rpath or -rpath-link)
解决方法
我相信您需要使用 -Wl,-rpath-link=$LIBPATH
来告诉链接器在链接操作期间在哪里查找解析运行时库引用。
可以在 ld
文档中找到更多信息:https://sourceware.org/binutils/docs-2.37/ld/Options.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。