2017-08-15 149 views
0


我正在使用基本上是運行openwrt Linino的arduino Yun的物聯網相關項目的dragino產品。我從arduino部分獲取數據,並在openwrt部分的C程序中使用libcurl(和HTTPS)將json發送到Firebase DB。
我設法設置了AR9331的交叉編譯工具鏈,我可以編譯依賴於libc的簡單程序。不過,我需要交叉編譯帶有ssl支持的libcurl,才能使用HTTPS將數據發送到firebase。這意味着我需要交叉編譯openssl。但是,我不確定我必須將哪個選項傳遞給配置腳本才能正確設置它。我可以從openssl和curl編譯一個靜態庫,以便我的程序有任何依賴性嗎?或者這樣做是不好的做法?
爲A9331交叉編譯libcurl和openssl

在我最後一次嘗試編譯openssl的:

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

其中$ LIBPATH是我在工具鏈11b的位置。 使得返回如下:

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 

我如何編譯OpenSSL的爲AR9331?如果我嘗試添加主機標誌,則我的架構無法識別。

編輯:也許避免依賴關係問題的最佳方法是創建一個ipkg包(openwrt包管理器)
我會嘗試它並通知您這是否可行。

+0

@FilipKočica如果你編輯的東西,請認真做好。 '
'標籤在普通文本中不會受到傷害,但它們在代碼塊中可見。另外,如果代碼塊不是實際代碼,則使用'<! - language:none - >'。 –

回答

0

默認情況下,這些軟件包應該存在於Openwrt中。 你有沒有試過用opkg下載它們?也許你必須檢查你是從哪個回收站購買的。

作爲最後的手段,您可以下載OpenWrt源代碼並構建這兩個軟件包,然後獲取.ipkg到您的設備,OpenWrt構建系統負責獲取工具鏈併爲您構建一切。