# scons_learn **Repository Path**: dmcus/scons_learn ## Basic Information - **Project Name**: scons_learn - **Description**: No description available - **Primary Language**: C - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-26 - **Last Updated**: 2025-08-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # scons_learn [scons github链接](https://github.com/SCons/scons) 1. pip 直接安装 scons ``` py -m pip install -r requirements.txt ``` 2. 使用python虚拟环境安装 [python 虚拟环境](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/#creating-a-virtual-environment) ``` py -m venv .venv .venv\Scripts\activate where python py -m pip install -r requirements.txt ``` 3. Sconstruct 编译类型 * Program: 编译成可执行程序, 这是常用的类型 * object: 只编译成目标文件 * Library: 编译成库文件,默认是指静态链接库 * StaticLibrary: 显示的编译成静态链接库,与上面的 Library 效果一样。 * SharedLibrary: 动态库 4. SCONS [常用变量](https://scons.org/doc/1.2.0/HTML/scons-user/a4774.html) ``` AS //汇编 ASFLAGS //汇编选项 CC //gcc CFLAGS //only c 选项 CXX CCFLAGS //C and c++ CPPFLAGS CXXFLAGS LINKFLAGS //链接选项 LINK //ld文件 LIBPATH //库搜索文件夹 LIBS //库文件 CPPPATH //include的目录 ``` 5. SCONS Program的实际命令 编译C的时候使用 ``` CCCOM print("CCCOM:",env['CCCOM']) CCCOM:$CC -o $TARGET -c $CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES ``` 编译汇编 只引用了 ASFLAGS 添加 ASFLAGS的时候需要加 -c (gcc -c 编译成.o 文件) ``` ASCOM print("ASCOM:",env['ASCOM']) ASCOM: $AS $ASFLAGS -o $TARGET $SOURCES ``` 6.系统环境变量导入 `ENV={'PATH':os.environ['PATH']}` ``` import os PREFIX = 'arm-none-eabi-' env = Environment( ENV={'PATH':os.environ['PATH']}, CC = PREFIX + 'gcc', AS = PREFIX + 'gcc ', LINK = PREFIX + 'gcc', TARGET_EXT = 'elf', SIZE = PREFIX + 'size', OBJDUMP = PREFIX + 'objdump', OBJCPY = PREFIX + 'objcopy', LINKFLAGS=Split(''' -mcpu=cortex-m0plus -mthumb --specs=nosys.specs -nostartfiles -Tlink.ld ''') ```