为A9331交叉编译libcurl和openssl

时间:2017-08-15 11:34:33

标签: c ssl curl embedded-linux openwrt


我正在使用一个dragino产品,基本上是一个运行openwrt Linino的arduino Yun用于物联网相关项目。我从arduino部分获取数据,并使用libcurl(和HTTPS)在openwrt部分的C程序中将json发送到firebase数据库。
我已经设法为AR9331设置了交叉编译工具链,我可以编译依赖于libc的简单程序。但是我需要与ssl支持交叉编译libcurl,以便使用HTTPS将数据发送到firebase。这意味着我需要交叉编译openssl。但是,我不确定我必须将哪个选项传递给Configure脚本才能正确设置它。我可以从openssl和curl编译静态库,以便我的程序doest有任何依赖吗?或者这样做是不好的做法?

我上次尝试使用以下方法编译openssl:

./Configure  --prefix=$(realpath $LIBPATH)/openssl  linux-mips32

其中$ LIBPATH是我的lib在工具链中的位置。 make返回以下内容:

apps/speed.o: In function `speed_main':
speed.c:(.text+0x4424): undefined reference to `AES_set_encrypt_key'
speed.c:(.text+0x443c): undefined reference to `AES_set_encrypt_key'
speed.c:(.text+0x4454): undefined reference to `AES_set_encrypt_key'
speed.c:(.text+0x7530): undefined reference to `AES_encrypt'
speed.c:(.text+0x7544): undefined reference to `AES_encrypt'
./libcrypto.so: undefined reference to `AES_set_decrypt_key'
./libcrypto.so: undefined reference to `getcontext'
./libcrypto.so: undefined reference to `setcontext'
./libcrypto.so: undefined reference to `makecontext'
./libcrypto.so: undefined reference to `AES_decrypt'
collect2: error: ld returned 1 exit status
Makefile.shared:180: recipe for target 'link_app.gnu' failed

如何为AR9331编译openssl?如果我尝试添加主机标志,则无法识别我的架构。

编辑:也许避免依赖问题的最佳方法是创建一个ipkg包(openwrt包管理器)
我会尝试并告知你这是否有效。

1 个答案:

答案 0 :(得分:0)

默认情况下,这些包应该出现在Openwrt中。 你试过用opkg下载它们吗?也许你必须检查一下你要从哪里取回。

作为最后的手段,您可以下载OpenWrt源代码并构建这两个软件包然后将.ipkg提供给您的设备,OpenWrt构建系统负责获取工具链并为您构建一切。