1.概述
關(guān)于libnoPoll移植到SylixOS的移植過程及移植方法參考工程技術(shù)筆記《移植libnopoll到SylixOS技術(shù)筆記》。本篇文檔旨在描述移植過程遇到的問題及解決問題的方法。
2、問題描述及解決方法
2.1 編譯提示未定義選項(xiàng)
在完成libnoPoll庫工程的創(chuàng)建后,在編譯時(shí)提示“'SO_BINDTODEVICE'undeclared (first use in this function)”,經(jīng)過查閱資料得知‘SO_BINDTODEVICE’是一個(gè)套接字選項(xiàng),該選項(xiàng)用于將套接口綁定到指定的網(wǎng)絡(luò)接口上。一般用于實(shí)現(xiàn)多網(wǎng)口負(fù)載均衡的方法。通常調(diào)用setsockopt接口對某個(gè)套接口進(jìn)行套接字選項(xiàng)的設(shè)置。
在SylixOS中setsockopt函數(shù)原型如下所示。
#include <sys/socket.h>
int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen);
函數(shù)setsockopt原型分析:
此函數(shù)成功時(shí)返回0,失敗時(shí)返回-1并設(shè)置錯(cuò)誤號(hào);
參數(shù)s是套接字(socket函數(shù)返回);
參數(shù)level是選項(xiàng)等級(jí)如下表 所示;
參數(shù)optname是選項(xiàng)名如下表所示;
參數(shù)optval是選項(xiàng)值;
參數(shù)optlen是選項(xiàng)長度。
通過調(diào)用setsockopt函數(shù)來設(shè)置不同選項(xiàng)等級(jí)的不同選項(xiàng),參數(shù)optval是一個(gè)指向變量的指針類型,根據(jù)不同的選項(xiàng),類型也不同。
在libnoPoll中的調(diào)用如下所示。
setsockopt (socket, SOL_SOCKET, SO_BINDTODEVICE, options->_interface, strlen (options->_interface));
對于'SO_BINDTODEVICE'套接字選項(xiàng),在Linux的man手冊中,有如下三點(diǎn)結(jié)論:
2.2 測試用例運(yùn)行時(shí)出錯(cuò)
在libnoPoll的測試代碼中會(huì)使用system函數(shù)來運(yùn)行某些shell命令,但有些shell命令在SylixOS下并不支持或支持相同功能但shell命令名不同,因此,在測試代碼運(yùn)行過程中有可能會(huì)出錯(cuò),遇到這種情況,可根據(jù)具體情況修改libnoPoll中提供的測試代碼。
在RealEvo IDE的base工程中,默認(rèn)會(huì)有l(wèi)ibcextern(SylixOS C庫)和libsylixos(SylixOS內(nèi)核組件)這兩個(gè)工程文件夾,在編譯base工程后會(huì)生成C庫文件和內(nèi)核庫文件。在測試用例運(yùn)行失敗后,通過跟蹤源代碼,發(fā)現(xiàn)在C庫和內(nèi)核庫中都同時(shí)定義了getaddrinfo接口。默認(rèn)情況下,在應(yīng)用程序沒有指定引用哪個(gè)庫文件時(shí),編譯時(shí)會(huì)使用內(nèi)核庫中定義的函數(shù)。在工程屬性中可以重新設(shè)置引用的庫文件,通過將應(yīng)用程序重新指定使用C庫之后,重新編譯應(yīng)用程序,再次部署就能夠正常運(yùn)行。
2.3 總結(jié)
由于大多數(shù)移植的中間件是從Linux下的工程移植過來的,因此,對于SylixOS不支持的特性,通常做法是看SylixOS有沒有可替換的方案,如果沒有的話,現(xiàn)階段是以裁剪為主。刪去不必要的功能。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
文章名稱:移植libnoPoll到SylixOS遇到的問題總結(jié)-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://m.rwnh.cn/article24/dsdece.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、移動(dòng)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容