0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

windows平台编译命令行参数超过32K报错规避办法

冬至子 来源:还没想好 作者:还没想好 2023-08-10 17:04 次阅读

打开工程目录下 SConstruct 文件:

在 objs = PrepareBuilding(env, RTT_ROOT) 这一行后面添加如下代码

prepare building environment

objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)

set spawn

def ourspawn(sh, escape, cmd, args, e):
filename = str(uuid.uuid4())
newargs = ' '.join(args[1:])
cmdline = cmd + " " + newargs
if (len(cmdline) > 16 * 1024):
f = open(filename, 'w')
f.write(' '.join(args[1:]).replace('', '/'))
f.close()

exec

cmdline = cmd + " @" + filename
proc = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, shell = False, env = e)
data, err = proc.communicate()
rv = proc.wait()
def res_output(_output, _s):
if len(_s):
if isinstance(_s, str):
_output(_s)
elif isinstance(_s, bytes):
_output(str(_s, 'UTF-8'))
else:
_output(str(_s))
res_output(sys.stderr.write, err)
res_output(sys.stdout.write, data)
if os.path.isfile(filename):
os.remove(filename)
return rv
if platform.system() == 'Windows':
env['SPAWN'] = ourspawn

在文件头部导入相应的模块

import subprocess
import platform
import uuid

将命令行参数写入文件中,让 gcc 工具链读取文件编译或链接。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • WINDOWS
    +关注

    关注

    3

    文章

    3524

    浏览量

    88441
  • CMD命令
    +关注

    关注

    0

    文章

    28

    浏览量

    8300
  • gcc编译器
    +关注

    关注

    0

    文章

    78

    浏览量

    3365
  • RTThread
    +关注

    关注

    8

    文章

    132

    浏览量

    40811
收藏 人收藏

    评论

    相关推荐

    鸿蒙ArkUI-X跨平台开发:【命令行工具(ACE Tools)】

    ACE Tools是一套为ArkUI-X项目跨平台应用开发者提供的命令行工具,支持在Windows/Ubuntu/macOS平台运行,用于构建OpenHarmony/HarmonyOS
    的头像 发表于 05-21 17:39 1655次阅读
    鸿蒙ArkUI-X跨<b class='flag-5'>平台</b>开发:【<b class='flag-5'>命令行</b>工具(ACE Tools)】

    ISE的命令行编译

    几个同名的空文件进去,结果是失败,会有很多bug。请问怎么解决这个问题,即在clearup project files后或者是初次编译时也能去使用这个命令行文件进行操作?。
    发表于 07-04 10:02

    cmd网络经典命令行

    cmd网络经典命令行:
    发表于 06-11 15:17 36次下载
    cmd网络经典<b class='flag-5'>命令行</b>

    如何获取其它程序的命令行参数

    开发环境:VC6 Windows XP 测试环境:WindowsXP 我们都知道,在程序里获取命令行参数很简单,WinMain函数会以参数的形式传递给我们,或者可以调用API Ge
    发表于 10-14 09:24 1次下载

    C语言入门教程-命令行参数

    命令行参数 在C中,获取用户输入的命令行参数是很方便的。程序的主函数会接受一个argv参数。有许多高级的库函数都会用到argv结构,所以了
    发表于 07-29 14:22 2604次阅读

    caxa命令行中的应用

    caxa命令行中的应用 命令行对于大多用户来说往往只是输入数据的作用,但是其中的奥妙还有很多,下面就给大家
    发表于 10-18 18:18 2281次阅读

    CMD的命令行高级教程

    CMD的命令行高级教程
    发表于 10-24 08:31 30次下载
    CMD的<b class='flag-5'>命令行</b>高级教程

    uvm命令行传递参数的小技巧

    当我们在创建动态仿真case时,使用命令行参数可以非常方便地控制DUT和TB的行为,比如配置寄存器、控制激励的发送数量、打开或关闭某些scoreboard等。
    的头像 发表于 08-19 11:53 5467次阅读

    K210命令行开发环境搭建指南

    K210命令行开发环境搭建指南.pdf
    发表于 11-07 11:58 5次下载

    Linux命令行与shell脚本编写

    Linux命令行与shell脚本编写
    发表于 01-11 16:50 4次下载

    Fcoder从命令行批量转换为TIFF

    何应用程序中,让您只需一个命令即可自动执行重复的转换任务。 命令行语法和用法 2TIFF图像转换器软件可以从Windows 命令提示符、PowerShell或任何其他
    的头像 发表于 05-22 14:13 770次阅读
    Fcoder从<b class='flag-5'>命令行</b>批量转换为TIFF

    STM32通过命令行编译和下载keil和IAR工程的方法

    STM32通过命令行编译和下载keil和IAR工程的方法
    的头像 发表于 10-31 17:01 1493次阅读
    STM32通过<b class='flag-5'>命令行</b><b class='flag-5'>编译</b>和下载keil和IAR工程的方法

    linux切换到命令行模式

    在Linux中,可以通过以下步骤切换到命令行模式: 打开终端。可以在应用菜单中找到终端或命令行终端。 在终端中输入命令“exit”或“logout”,然后按回车键。 系统会提示您输入管理员密码。输入
    的头像 发表于 11-13 16:47 1728次阅读

    idea如何输入命令行参数

    在许多软件开发和系统管理的任务中,我们经常需要向应用程序传递命令行参数命令行参数是在运行时传递给程序的值,用于指定程序的行为和配置选项。本文将详细介绍如何在不同的编程语言和操作系统中
    的头像 发表于 12-06 15:01 1086次阅读

    HarmonyOS开发:【基于命令行(安装库和工具集)】

    使用命令行进行设备开发时,可以通过以下步骤安装编译OpenHarmony需要的库和工具。
    的头像 发表于 04-25 21:03 376次阅读
    HarmonyOS开发:【基于<b class='flag-5'>命令行</b>(安装库和工具集)】