# oebuild **Repository Path**: xfan1024/oebuild ## Basic Information - **Project Name**: oebuild - **Description**: openEuler rpm构建工具 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 2 - **Created**: 2023-08-30 - **Last Updated**: 2023-12-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # openEuler RPM包编译工具 ## 依赖 - docker - qemu(可选,跨架构编译需要) ## 用法示例 - 用法 ``` Usage: oebuild [options] Options: --help print this help --openeuler-version openEuler version, default 22.03 --arch arch, default $(uname -m) --output-dir output dir, default ./output --create-only create container only, not run --no-gcc-secure do not use gcc_secure --name set container name ``` - 单独编译 ```shell oebuild package.src.rpm # 通过SRPM包编译 oebuild package/ # 通过源码目录编译(方便调试修改) ``` - 指定编译环境所使用的openEuler版本 ```shell oebuild --openeuler-version 23.03 package.src.rpm ``` - 指定目标CPU架构 ```shell oebuild --arch arm64 package.src.rpm # 如果跨架构需要安装 qemu-user-static ``` - 关于gcc_secure 在OBS的编译环境中使用了gcc_secure,该工具会自动为gcc/g++/c+++命令增加一些额外的编译参数,以增强安全性。 oebuild之前并没有使用gcc_secure,但是某些情况下会编译会失败,可参考[ISSUE #I8IP0J](https://gitee.com/xfan1024/oebuild/issues/I8IP0J)。 但是原版gcc_secure和OBS环境耦合,不适合用于oebuild,因此oebuild中使用了一个简化版的gcc_secure机制,可以实现类似的效果,也能解决上述问题。 如果你不需要本功能,使用`--no-gcc-secure`参数可以关闭。 ## 关于docker目录 oebuild的工作原理是将源码挂载到用于编译容器环境中,在容器环境中执行编译指令。 如果只是需要编译软件包,oebuild会自动从dockerhub中下载所需镜像。 如果需要自行制作或改造编译环境,可参考docker/目录下的代码。 ## 相关文章 - [单命令构建RPM包](https://zhuanlan.zhihu.com/p/653340678) - [单命令跨架构构建RPM包](https://zhuanlan.zhihu.com/p/653342233)