zynq buildroot编译UWSGI

本文介绍如何使用Buildroot 2018.1和uWSGI 2.0.17.1进行交叉编译的过程。主要内容包括下载uWSGI源码包,配置并复制Python的pyconfig.h到uWSGI的Python插件目录,以及编译过程中遇到的错误和解决方法。参考链接提供了详细的步骤和解决方案。

buildroot: 2018.1
uwsgi: 2.0.17.1

  • 下载uwsgi源码包
    https://uwsgi-docs.readthedocs.io/en/latest/Download.html
    https://projects.unbit.it/downloads/uwsgi-2.0.17.1.tar.gz  
  • 复制python中pyconfig.h到uwsgi/plugins/python,并在uwsgi_python.h引用
   #include <uwsgi.h>
   #include <pyconfig.h>
   #include <Python.h>
  • 编译
    CC=$BUILDROOT_HOST/bin/arm-xilinx-linux-gnueabi-gcc 
    CPP=$BUILDROOT_HOST/bin/arm-xilinx-linux-gnueabi-cpp 
    LDFLAGS='-L$BUILDROOT_HOST/arm-buildroot-linux-gnueabi/sysroot/usr/lib' 
    CPUCOUNT=2 
    $BUILD_ROOT_HOST/bin/python3 
    uwsgiconfig.py --build
  • 相关错误
   plugins/python/uwsgi_python.h:3:10: fatal error: Python.h: 没有那个文件或目录
   error: #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)."
   Exception: you need a C compiler to build uWSGI
   lib/libz.so: file not recognized: File format not recognized
  • 参考
    http://matelakat.blogspot.com/2013/08/cross-compiling-uwsgi-with-buildroot.html
Zynq 裸机开发环境下,提取编译工具链的过程主要依赖于 Xilinx 提供的软件开发工具,例如 Xilinx SDK 或 Vitis 工具链。以下是具体的提取和配置步骤: ### 3.1 使用 Xilinx SDK 提取工具链 Xilinx SDK 是 Zynq 开发中常用的工具,它集成了适用于 Cortex-A9 处理器的交叉编译工具链。开发者可以从 SDK 安装目录中提取出适用于裸机环境的编译工具。 - **工具链路径** Xilinx SDK 中的工具链通常位于以下路径: ``` <Xilinx_SDK_Install_Dir>/gnu/aarch64/lin/gcc-arm-linux-gnueabi/bin/ ``` 该路径下包含 `arm-linux-gnueabi-gcc`、`arm-linux-gnueabi-g++` 等编译器工具,适用于 Zynq 裸机程序的构建[^4]。 - **环境变量配置** 为了简化使用流程,可以将该路径添加到系统环境变量 `PATH` 中,或者在终端中使用以下命令临时设置: ```bash export PATH=<Xilinx_SDK_Install_Dir>/gnu/aarch64/lin/gcc-arm-linux-gnueabi/bin:$PATH ``` - **交叉编译示例** 使用该工具链编译一个适用于 Zynq 裸机环境的简单程序: ```bash arm-linux-gnueabi-gcc -o blinky blinky.c -nostdlib -fno-builtin ``` 其中 `-nostdlib` 和 `-fno-builtin` 参数用于禁用标准库链接,确保程序在裸机环境下运行[^4]。 ### 3.2 使用 Vitis 工具链提取 Vitis 是 Xilinx 推出的统一软件平台,支持 Zynq UltraScale+ MPSoC 和 Zynq-7000 系列的裸机开发。Vitis 提供了用于裸机开发的交叉编译工具链。 - **工具链路径** 在 Vitis 安装目录下,找到以下路径以获取工具链: ``` <Vitis_Install_Dir>/gnu/aarch64/lin/gcc-arm-none-eabi/bin/ ``` 该路径下的 `arm-none-eabi-gcc` 支持裸机开发,并且可以与 Vitis 提供的 BSP(Board Support Package)结合使用[^5]。 - **环境变量配置** 类似于 SDK,可将该路径添加到环境变量中: ```bash export PATH=<Vitis_Install_Dir>/gnu/aarch64/lin/gcc-arm-none-eabi/bin:$PATH ``` - **编译裸机程序** 使用 Vitis 工具链编译裸机程序时,通常需要链接 Xilinx 提供的底层库(如 `xilkernel`)和 BSP 配置文件: ```bash arm-none-eabi-gcc -o hello_world hello_world.c -I./bsp/include -L./bsp/lib -lxilkernel -lxil ``` ### 3.3 手动打包工具链用于外部开发 若需将工具链用于外部开发环境(如在不同主机上部署),可以手动打包 SDK 或 Vitis 中的工具链目录。 - **打包工具链** 使用 `tar` 命令将工具链目录打包: ```bash tar -czvf zynq-toolchain.tar.gz <toolchain-path> ``` - **部署工具链** 在目标主机解压并配置环境变量: ```bash tar -xzvf zynq-toolchain.tar.gz -C /opt/zynq-toolchain/ export PATH=/opt/zynq-toolchain/bin:$PATH ``` ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值