OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 756|回复: 0

分享一个使用petalinux(2020.2)编译时解决编译报错问题的自动化脚本

[复制链接]

0

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2024-3-19
在线时间
105 小时
发表于 2024-6-1 10:22:58 | 显示全部楼层 |阅读模式
本帖最后由 Alexan 于 2024-6-1 14:13 编辑

参考嵌入式Linux开发指南文档,使用petalinux编译时经常会由于网络原因导致报错,文档中给出了解决办法。但是每次创建一个新的petalinux工程都要手动去图形化界面配置很麻烦,这里分享一个脚本,运行后可以自动配置好文档里提到的几个问题。前提是要按照文档下载好指定的几个软件包!!!
  1. #!/bin/bash

  2. # 配置文件路径
  3. CONFIG_FILE="project-spec/configs/config"
  4. BSP_CONF_FILE="project-spec/meta-user/conf/petalinuxbsp.conf"

  5. # 新的配置值
  6. NEW_PRE_MIRROR_URL='CONFIG_PRE_MIRROR_URL="file:///mnt/hgfs/share/downloads_2020.2/downloads/"'
  7. NEW_SSTATE_FEEDS_URL='CONFIG_YOCTO_LOCAL_SSTATE_FEEDS_URL="/mnt/hgfs/share/sstate_aarch64_2020.2/aarch64/"'

  8. # 新的 PREMIRRORS_prepend 内容
  9. PREMIRRORS_CONTENT='PREMIRRORS_prepend = " \
  10. git://.*/.* file:///mnt/hgfs/share/downloads_2020.2/downloads/ \n\
  11. gitsm://.*/.* file:///mnt/hgfs/share/downloads_2020.2/downloads/ \n\
  12. ftp://.*/.* file:///mnt/hgfs/share/downloads_2020.2/downloads/ \n\
  13. http://.*/.* file:///mnt/hgfs/share/downloads_2020.2/downloads/ \n\
  14. https://.*/.* file:///mnt/hgfs/share/downloads_2020.2/downloads/ \n"'

  15. # 检查配置文件是否存在
  16. if [ ! -f "$CONFIG_FILE" ]; then
  17.     echo "配置文件 $CONFIG_FILE 不存在。"
  18.     exit 1
  19. fi

  20. # 替换或添加 CONFIG_PRE_MIRROR_URL
  21. if grep -q '^CONFIG_PRE_MIRROR_URL=' "$CONFIG_FILE"; then
  22.     # 如果存在,使用 sed 替换配置值
  23.     sed -i 's|^CONFIG_PRE_MIRROR_URL=.*|'"$NEW_PRE_MIRROR_URL"'|' "$CONFIG_FILE"
  24. else
  25.     # 如果不存在,添加新的配置项
  26.     echo "$NEW_PRE_MIRROR_URL" >> "$CONFIG_FILE"
  27. fi

  28. # 替换或添加 CONFIG_YOCTO_LOCAL_SSTATE_FEEDS_URL
  29. if grep -q '^CONFIG_YOCTO_LOCAL_SSTATE_FEEDS_URL=' "$CONFIG_FILE"; then
  30.     # 如果存在,使用 sed 替换配置值
  31.     sed -i 's|^CONFIG_YOCTO_LOCAL_SSTATE_FEEDS_URL=.*|'"$NEW_SSTATE_FEEDS_URL"'|' "$CONFIG_FILE"
  32. else
  33.     # 如果不存在,添加新的配置项
  34.     echo "$NEW_SSTATE_FEEDS_URL" >> "$CONFIG_FILE"
  35. fi

  36. # 确认替换或添加是否成功
  37. if grep -q "$NEW_PRE_MIRROR_URL" "$CONFIG_FILE" && grep -q "$NEW_SSTATE_FEEDS_URL" "$CONFIG_FILE"; then
  38.     echo "配置文件已成功更新。"
  39. else
  40.     echo "配置文件更新失败。"
  41.     exit 1
  42. fi

  43. # 检查 BSP 配置文件是否存在
  44. if [ ! -f "$BSP_CONF_FILE" ]; then
  45.     echo "BSP 配置文件 $BSP_CONF_FILE 不存在。"
  46.     exit 1
  47. fi

  48. # 添加 PREMIRRORS_prepend 内容到 BSP 配置文件
  49. if ! grep -q '^PREMIRRORS_prepend' "$BSP_CONF_FILE"; then
  50.     cat << EOF >> "$BSP_CONF_FILE"
  51. $PREMIRRORS_CONTENT
  52. EOF
  53.     echo "已将 PREMIRRORS_prepend 内容添加到 BSP 配置文件。"
  54. else
  55.     echo "BSP 配置文件中已存在 PREMIRRORS_prepend 内容。"
  56. fi

  57. # 确认添加是否成功
  58. if grep -q "^PREMIRRORS_prepend" "$BSP_CONF_FILE"; then
  59.     echo "BSP 配置文件已成功更新。"
  60. else
  61.     echo "BSP 配置文件更新失败。"
  62.     exit 1
  63. fi
复制代码
执行脚本要注意以下几点:
1. 添加可执行权限
2. 脚本要放在创建好的petalinux工程目录下执行
3. 脚本中有文档中提到的几个软件包,其中路径要替换成自己软件包的路径(重要!)
4. 该脚本针对的petalinux版本为2020.2,其他版本如果存在目录结构或其他差异,需要对脚本做一些必要修改后才能适用(重要!)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 09:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表