使用共享动态库进行交叉编译
Cross compiling with shared dynamic libraries
在我的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
将是一个坏主意?)
这表明我需要有OpenSSL的armhf二进制文件
正确的。
这似乎有点浪费,因为我在我的BeagleBone上有它们,如果它能耐心等待,直到我部署它。
你似乎认为共享库在运行时只需要,但事实并非如此。
ELF
代表可执行和链接格式。.so
在静态链接时非常需要在主可执行文件中构造各种表,然后加载器将在运行时使用这些表来解析从主可执行文件到.so
的引用。
如果您熟悉Win32,您可以将.so
想象为Win32 .LIB
和.DLL
的组合打包到一个文件中。
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 用于交叉编译和CMake的预处理器宏的单元测试
- 在Linux上使用Clang / OLLVM交叉编译helloworld Windows可执行文件时的问题
- 无法使用 aarch64-unknown-nto-qnx7.0.0-g++-5.4.0 编译器交叉编译 QNX 平台的
- 如何使用导出的函数交叉编译 DLL
- 交叉编译:特殊的交叉编译器还是只是带有选项 -march 的 gcc?
- 交叉编译时包括外部库
- 如何交叉编译C++文件
- SFML 交叉编译 for Windows on Linux.
- 使用 cmake 交叉编译 libwebsockets
- 使用cmake交叉编译gRPC
- 为什么Qt必须从源代码构建以进行交叉编译?
- 交叉编译树莓派
- Microsoft Visual Studio 2019交叉编译CMake库 - 有效,但存在SEG错误
- Jlibfprint 交叉编译
- 在Linux上交叉编译Windows应用程序时如何链接到Winsock?
- GPS 的交叉编译显示"unrecognized option"
- 比格犬骨交叉编译动态链接混乱
- 在交叉编译中找不到动态链接库
- 使用共享动态库进行交叉编译