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

    文章

    3442

    浏览量

    87153
  • CMD命令
    +关注

    关注

    0

    文章

    28

    浏览量

    8174
  • gcc编译器
    +关注

    关注

    0

    文章

    78

    浏览量

    3236
  • RTThread
    +关注

    关注

    7

    文章

    129

    浏览量

    40525
收藏 人收藏

    评论

    相关推荐

    在STM32实现命令行

    工作中的开发环境都是基于linux命令行交互,作为命令行的重度使用者,玩单片机也要使用命令行工具,百度了一些命令行工具,有几个不错的开源 cmd 交互工具,主要看了 finsh
    发表于 12-09 11:32 1640次阅读

    ISE的命令行编译

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

    支持命令行传递的参数吗?

    的每一个。要手动尝试在Makefile中设置CFLAGS。可以在预处理器宏部分访问命令行传递的参数吗?如果这是在命令行值不是构建的一部分的IDE中构建的,那么我还需要能够支持默认值。
    发表于 03-17 06:03

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

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

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

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

    caxa命令行中的应用

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

    博达环网配置命令行

    博达工业交换要环网配置命令行
    发表于 12-27 16:24 0次下载

    CMD的命令行高级教程

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

    Linux下播放器开发-Mplayer命令行使用介绍

    前面文章介绍了Linux下Mplayer播放的交叉编译、移植,在命令行上成功运行了mplayer播放器,完成了视频播放。mplayer支持二次开发,也支持命令行上直接使用;如果在命令行
    的头像 发表于 08-14 09:10 6014次阅读

    Golang基于flag库实现一个命令行工具

    Golang 标准库中的 flag 库提供了解析命令行选项的能力,我们可以基于此来开发命令行工具。
    的头像 发表于 10-28 09:26 982次阅读

    Fcoder从命令行批量转换为TIFF

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

    linux虚拟机怎么调出命令行

    在Linux虚拟机中调出命令行界面,可以通过以下步骤实现: 打开虚拟机,进入到Linux系统。 在桌面或应用菜单中找到终端或命令行图标,点击打开。 输入命令行指令,执行相应的操作。 另外,也可以通过
    的头像 发表于 11-08 11:28 1662次阅读

    linux切换到命令行模式

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

    idea如何输入命令行参数

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

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

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