在我的C++项目中,我正在编译和链接一个使用OpenSSL的库。
我需要为默认安装了BeagleBone的openssl编译这个项目。我已经在我的开发机器上下载了libssl-dev。
因此,如果我在x86_64上为我的开发机器编译,我可以很好地编译该项目,但是我无法成功地交叉编译:
/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是个坏主意)?
发布于 2015-09-26 18:36:36
这表明我需要有OpenSSL的armhf二进制文件。
对,是这样。
这看起来有点浪费,因为我在我的BeagleBone上有它们,如果它能耐心等待直到我部署它。
您似乎认为只有在运行时才需要共享库,但事实并非如此。
ELF代表可执行和链接格式。静态链接时非常需要.so来构造主可执行文件中的各种表,然后加载程序将在运行时使用这些表来解析从主可执行文件到.so的引用。
如果您熟悉Win32,可以将.so看作是打包到单个文件中的Win32 .LIB和.DLL的组合。
https://stackoverflow.com/questions/32789598
复制相似问题