當前位置:首頁 » 編程軟體 » Os編譯項

Os編譯項

發布時間: 2023-05-01 23:38:55

1. [openharmony]liteos-a系統編譯之ninja

在 文章 中已經分析openharmony的小型系統(liteos-a)編譯過程,最主要的就是調用gn/ninja/makefs三個命令最終生成可燒錄的鏡像文件
在 文章 詳細介紹了liteos-a系統編譯時gn命令的原理,本文中針對liteos-a編譯時ninja的使用做一些詳細說明
通過前面文章中可以看到調用的ninja命令如下

ninja工具源碼及文檔路徑為 https://github.com/ninja-build/ninja
網上也有很多中文版的資料,如 Ninja - chromium核心構建工具

類似gn工具需要在根目錄下有一個.gn以及BUILD.gn文件,ninja工具運行需要根目錄下有一個build.ninja文件,也即ninja編譯規則的入口,此文件所在路徑可以通過選項 -C dir 來指定,例如liteos-a中使用的就是gn的out路徑 /home/itsenlin/code/ohos_3.0/out/hispark_taurus/ipcamera_hispark_taurus

此文件是ninja編譯工具的入口,類似於make的makefile;相對於makefile,ninja文件規則、依賴更簡單,編譯速度也會更快
打開此文件可以看到主要包含以下幾塊內容

這樣在執行ninja命令時,就會默認build這個 all ,然後根據前面這個依賴關系進而編譯整個系統

但是有一個問題,查看這個文件內容,並沒有看到各模塊目錄下ninja的信息,這個是怎麼關聯進來的呢?

查看這個文件內容,這裡面不僅僅有編譯工具鏈相關的定義,還有對編譯所需要的各模塊的 .ninja 文件的關聯也在這里,以及build.gn中定義的一些規則也轉換成rule放在這個文件中了,如下

這樣就關聯上了編譯所需要的所有的ninja文件,然後 ninja就會對每個依賴項進行編譯,最終生成 .o 、 .a 、 .so 、 .bin 等文件

當前openharmony編譯系統中不僅僅使用了gn+ninja,還使用了make+makefile。
舉個例子,linux kernel的編譯就是通過make編譯的;而liteos kernel兩者都有用,編譯的文件也不一樣,後面再詳細分析吧

是怎麼實現使用兩種編譯工具同時編譯的呢?看生成的ninja文件(或者gn中的定義)不難看出是通過執行bash腳本來實現的,以liteos-a的make為例:
gn中有下面這個定義

轉換成ninja規則如下

從上面定義看,就是ninja在編譯到這個build的時候就會執行 //kernel/liteos-a/build.sh 腳本,而此腳本最後就是執行的 make 命令,如下

2. Mac OS編譯的C/C++/Objective-C程序能否在Linux下運行

不可以 C語言是平台依賴的 當操作系統或者CPU不同 編譯出來的目標文件無法通用
你可以把源文件復制到目標系統上 並用目標系統的編譯器重新編譯
前提是源碼中不能使用平台專有的介面函數

3. Mac OS 下如何編譯自己的php擴展

為了擴展管理方便,首先來安裝pecl擴展管理器:
cd /usr/lib/php
sudo php install-pear-nozlib.phar
安裝Redis、Memcache、Mongo等擴展。
sudo pecl install redis
sudo pecl install memcache
sudo pecl install mongo
sudo pecl install xdebug
將擴展配置添加的php.ini文件中:
extension=memcache.so
extension=mongo.so
extension=redis.so
zend_extension=xdebug.so
安裝xcache,從官網下載Release-3.2.0解壓縮並安裝
tar xvf xcache-3.2.0.tar
cd xcache-3.2.0
phpize
/configure
make
sudo make install
配置XCache
[xcache]
xcache.size = 128M
xcache.var_size = 8M
xcache.var_count = 1
xcache.var_slots = 8K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.optimizer = Off
由於Mac自帶的PHP環境是不包括mcrypt擴展的,所以需要下載同版本的php源碼包,單獨編譯這個模塊載入。從官網的歸檔裡面找到php5.5.14的源碼包,下載:http://php.net/releases/
tar zxvf php-5.5.14.tar.gz
cd php-5.5.14/ext/mcrypt/
phpize
。/configure
make
sudo make install
配置ext-mcrypt
extension=mcrypt.so
為了加速,還需要打開opcache。
zend_extension=opcache.so
[opcache]
; Determines if Zend OPCache is enabled
opcache.enable=0
; Determines if Zend OPCache is enabled for the CLI version of PHP
opcache.enable_cli=0

4. mac os 平台的庫怎麼編譯

Mac系統本質上是一個Unix系統,Unix系統就是以C語言編寫的。
目前Mac OS X的開發工具為Xcode,支持C和標准C++程序的編寫。而Mac平台也有不少支持C語言編程的IDE,像NetBeans和Eclipse。
不過,Mac OS X目前默認沒有C語言的編譯器,需要安裝Xcode,Xcode包含了GCC編譯器。
如果只是用Mac來學習C語言,安裝一個Xcode即可。Xcode的安裝文件在系統盤的Optional文件夾里。

熱點內容
oracle測試sql 發布:2025-07-08 03:16:54 瀏覽:972
php壁紙源碼 發布:2025-07-08 03:04:26 瀏覽:320
android應用層 發布:2025-07-08 02:42:32 瀏覽:301
大唐存儲銷量 發布:2025-07-08 02:41:11 瀏覽:582
腳本怎麼打開 發布:2025-07-08 02:41:06 瀏覽:822
貴州電信iPtv升級伺服器地址 發布:2025-07-08 02:38:48 瀏覽:412
電腦怎麼鏈接本地伺服器 發布:2025-07-08 02:34:22 瀏覽:147
android調試webview 發布:2025-07-08 02:26:28 瀏覽:358
壓縮袋鞋子 發布:2025-07-08 02:21:30 瀏覽:752
為什麼安卓打吃雞感覺有延遲 發布:2025-07-08 02:09:32 瀏覽:168