当前位置:首页 » 编程软件 » 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文件夹里。

热点内容
服务器搭建需要哪些东西 发布:2025-07-10 09:15:23 浏览:800
无限密码怎么改 发布:2025-07-10 09:14:32 浏览:103
coc按键精灵脚本 发布:2025-07-10 09:12:40 浏览:310
excel表格ftp函数 发布:2025-07-10 09:05:50 浏览:276
u2game的解压密码 发布:2025-07-10 09:05:14 浏览:597
c语言编译器ide苹果下载 发布:2025-07-10 09:05:13 浏览:293
andftp端口 发布:2025-07-10 08:57:04 浏览:606
战地一有什么不用加速器的服务器 发布:2025-07-10 08:51:33 浏览:405
linux怎么看自己服务器的ip 发布:2025-07-10 08:51:29 浏览:136
怎么写脚本刷视频 发布:2025-07-10 08:49:51 浏览:382