当前位置: 首页 > news >正文

Scons编译lib库

实例目录结构:

  • include文件夹:test.h
  • src文件夹:test.c
  • SConscript
  • SConstruct

如下图所示:
在这里插入图片描述
SConstruct:

#执行当前目录下的SConscript
SConscript('SConscript');

SConscript:

import os
from SCons.Script import *# 设置编译环境
env = Environment()#这样指定提示找不到编译器路径,需要绝对路径
#env['CC'] = 'arm-none-eabi-gcc'#指定C编译器
env['CC'] = '/home/work/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-gcc'#设置CFLAGS
env['CFLAGS'] = ' -mfpu=neon-vfpv4 -mtune=cortex-a7 -march=armv7-a -mfloat-abi=softfp -O2 -Wall'#指定C++编译器
env['CXX'] = '/home/work/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-g++'#指定CXX FLAG
env['CXXFLAGS'] = env['CFLAGS'] + ' -Woverloaded-virtual -fno-exceptions -fno-rtti -std=c++11 -fexceptions'#设置需要编译成库的文件
sources = [Glob('src/*.c') + Glob('src/*.cpp')];# 头文件搜索路径
include_dirs = [os.getcwd() + '/include']# 添加头文件搜索路径
env.Append(CPPPATH=include_dirs)#设置目标库的名字以及依赖的文件
lib = env.StaticLibrary("test", [sources])# 设置默认构建目标为静态库
Default(lib)# 构建目标
env.Alias('all', lib)
env.Default(lib)

直接在SConstruct文件所在目录下执行scons命令即可编译,会在src目录下生成libtest.a。比较奇怪的是,在命令行中直接执行arm-none-eabi-gcc -v是可以打印这个交叉编译编译工具链的信息的,证明工具链添加到环境变量中是没有问题的,但是Sconscript脚本中直接这样写env[‘CC’] = ‘arm-none-eabi-gcc’,会提示找不到编译工具链,需要编译工具链的绝对路径。看样子是Scons不会共用系统的环境变量,有知道的同学请留言指导下哈!

http://www.lryc.cn/news/115613.html

相关文章:

  • React源码解析18(1)------ React.createElement 和 jsx
  • 系列3-常见的高可用MySQL解决方案
  • C#登录后携带cookie爬取数据
  • 自动驾驶国家新一代人工智能开放创新平台产业化应用
  • Maven分模块-继承-聚合-私服的高级用法
  • Spring 是如何解决循环依赖问题的?
  • Spring-2-深入理解Spring 注解依赖注入(DI):简化Java应用程序开发
  • java 强密码验证策略工具类
  • CI/CD—K8S 基本理解与部署
  • 2023网络安全常用工具汇总(附学习资料+工具安装包)
  • OpenStack监控工具
  • 讲解密码学综合应用
  • Flamingo
  • Leetcode-每日一题【剑指 Offer 12. 矩阵中的路径】
  • 安全渗透知识总结二
  • 【线程】wait()+notifyAll()实现多个线程交替遍历,输出ABCABC
  • MyBatis 缓存机制复习及项目中的应用经历
  • 匈牙利算法详解
  • script的三种加载模式
  • mongo 中两张表联合查询
  • 【Linux】多路转接 -- epoll
  • 学会RabbitMQ的延迟队列,提高消息处理效率
  • ChatGPT会取代搜索引擎吗?BingChat、GoogleBard与ChatGPT区别
  • 多个QLabel中文字左右对其问题研究
  • 链式二叉树统计结点个数的方法和bug
  • C语言-报错集锦-03-malloc(): memory corruption: 0x0000000001496d90 ***
  • 现代C++中的从头开始深度学习:【5/8】卷积
  • 以太网帧格式与吞吐量计算
  • vue中install方法
  • Flutter:文件读取—— video_player、chewie、image_picker、file_picker