首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >共享动态库的交叉编译

问共享动态库的交叉编译
EN

Stack Overflow用户
提问于 2015-09-25 19:47:28
回答 1查看 2.2K关注 0票数 2

在我的C++项目中,我正在编译和链接一个使用OpenSSL的库。

我需要为默认安装了BeagleBone的openssl编译这个项目。我已经在我的开发机器上下载了libssl-dev。

因此,如果我在x86_64上为我的开发机器编译,我可以很好地编译该项目,但是我无法成功地交叉编译:

代码语言:javascript
复制
/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lssl
/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lcrypto

这表明我需要为OpenSSL设置armhf二进制文件,这似乎有点浪费,因为我的BeagleBone上有这些二进制文件,只要它能耐心等待,直到部署它。

这是绕开交叉编译OpenSSL的唯一途径吗?那么,我需要在哪里安装.so文件(我猜make install是个坏主意)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-26 18:36:36

这表明我需要有OpenSSL的armhf二进制文件。

对,是这样。

这看起来有点浪费,因为我在我的BeagleBone上有它们,如果它能耐心等待直到我部署它。

您似乎认为只有在运行时才需要共享库,但事实并非如此。

ELF代表可执行和链接格式。静态链接时非常需要.so来构造主可执行文件中的各种表,然后加载程序将在运行时使用这些表来解析从主可执行文件到.so的引用。

如果您熟悉Win32,可以将.so看作是打包到单个文件中的Win32 .LIB和.DLL的组合。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32789598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档