MAC OS下編譯apple跨平台的libevent庫 (可延申到其它第三庫)

來源:互聯網
上載者:User

標籤:

apple下的跨平台是指不同裝置上的蘋果系統以及同一系統在不同cpu體系的不同版本。

前面一篇介紹如何用ndk編譯android跨平台的第三庫,那樣的方法卻不能應用在apple上。

網上可以找到這麼一個指令碼,其主要過程和功能如:

指令碼主要依靠了xcrun -sdk命令來搜尋出平台關聯的編譯器和SDK目錄位置。不像ndk的目錄結構,蘋果的目錄結構不清晰有些又不統一,xcrun就是這個諮客,問它就是了。

只要將指令碼中相應的容器修改就可以應用到其它第三庫的編譯中去。

 

接下來就編譯過程中的怪問題。

我編譯libevent庫目的是用在行動裝置上,然而怪事就發生了。在darwin版本中可以使用kqueue,但移動系統版本就不能使用kqueue只能用poll。原因是configugre中有兩項對kqueue的檢測居然會有一項不能通過,其元兇卻是無關的標頭檔stdlib.h。因為在configure中有對--host為darwin的處理,在檢測項目之前stdlib.h己經被包含,所以在檢測項目的程式碼片段中沒有對stdlib.h的包含。問題就是configure沒有對--host為蘋果其它系統定製相關的處理,好了進入檢測項目時,函數引用不允許隱式聲明,也就是沒有標頭檔的聲明,導致了檢測項目的失敗。只要在configure中相應的地方加上對stdlib.h的包含,搞定,全部版本的libevent都可以使用kqueue。

MAC OS下編譯apple跨平台的libevent庫 (可延申到其它第三庫)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.