我正在使用基本上是運行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包管理器)
我會嘗試它並通知您這是否可行。
@FilipKočica如果你編輯的東西,請認真做好。 '
'標籤在普通文本中不會受到傷害,但它們在代碼塊中可見。另外,如果代碼塊不是實際代碼,則使用'<! - language:none - >'。 –