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

网站界面设计如何实现功能美与形式美的统一全国十大跨境电商公司排名

网站界面设计如何实现功能美与形式美的统一,全国十大跨境电商公司排名,网站如何做交互,网站在建设中 英语文章目录 RT-Thread 移植编译篇编译os.environ 使用示例os.putenv使用示例python from 后指定路径 编译问题_POSIX_C_SOURCE 介绍编译结果 RT-Thread 移植编译篇 本文以瑞萨的ra4m2-eco 为例介绍如何下载rt-thread 及编译的设置。 RT-Thread 代码下载: git clone …

文章目录

    • RT-Thread 移植编译篇
      • 编译
        • os.environ 使用示例
        • os.putenv使用示例
        • python from 后指定路径
    • 编译问题
      • _POSIX_C_SOURCE 介绍
      • 编译结果

RT-Thread 移植编译篇

本文以瑞萨的ra4m2-eco 为例介绍如何下载rt-thread 及编译的设置。

RT-Thread 代码下载
git clone 路径:https://github.com/RT-Thread/rt-thread
在这里插入图片描述

代码下载下来后如下:

[03:04:21] (*^~^*) ~/sam/workbase/rtthread/rt-thread$ ls
AUTHORS  ChangeLog.md  examples  Jenkinsfile  libcpu   README_de.md  README.md  src   tools
bsp      components    documentation  include Kconfig  LICENSE  README_es.md  README_zh.md  

此外还需自行下载一套编译 arm gcc 编译工具,如gcc-arm-none-eabi

编译

进入rt-thread/bsp/renesas/ra4m2-eco 目录执行scons 命令进行编译,通常会报出 RTT_ROOT 没有定义,这个是系统环境变量,我们可以通过 os.environ 进行设置。我看网上很多都提到了使用python中的 setenv 的函数。这时可能是你遇到 AttributeError: module 'os' has no attribute 'setenv' 错误。 我这边最后使用的是 os.environ 进行设置。

os.environ 使用示例

os.environ 是一个包含所有环境变量的字典。你可以直接使用它来设置环境变量,就像操作普通字典一样:

import os 
os.environ['MY_VARIABLE'] = 'my_value' 

这种方法设置的环境变量只在当前进程中有效,如果 Python 脚本启动了新的子进程,这些变量也会传递给子进程。

os.putenv使用示例

os.putenv() 是一个函数,可以用来设置环境变量。但它的行为会因操作系统和 Python 解释器的不同而有所差异。在某些系统上,使用 os.putenv() 设定的环境变量可能不会立即反映在 os.environ 中,或者根本不起作用:

import os 
os.putenv('MY_VARIABLE', 'my_value') 

由于这些潜在的不一致性和限制,推荐使用 os.environ 方法来设置环境变量。 我这边使用os.putenv 还是没有解决问题,如下:

import os
#os.putenv('RTT_ROOT', '../../..')
os.environ['RTT_ROOT'] = '../../..'
print(os.getenv('RTT_ROOT'))
rt-thread/bsp/renesas/ra4m2-eco$ py set_evn.py
None

最后还是使用os.environ['MY_VARIABLE'] = 'my_value' 这种方式有效。

os.environ['RTT_ROOT'] = '../../..'if os.getenv('RTT_CC'):CROSS_TOOL = os.getenv('RTT_CC')
if os.getenv('RTT_ROOT'):RTT_ROOT = os.getenv('RTT_ROOT')

至于 RTT_ROOT 具体要设置成什么样的值,需要根据rt-thread/bsp/renesas/ra4m2-eco/Kconfig 进行配置:

mainmenu "RT-Thread Configuration"config BSP_DIRstringoption env="BSP_ROOT"default "."config RTT_DIRstringoption env="RTT_ROOT"default "../../.."
python from 后指定路径

在 Python 中,使用 from 关键字可以导入特定的模块、函数、变量等。当你使用 from ... import ... 这样的语法时,通常会从Python的标准库、已安装的包或者模块搜索路径中的模块导入。如果你需要从特定的文件路径导入模块,需要确保该路径在 Python 搜索模块的路径列表中。

假设你有一个位于 /path/to/module 目录下的模块 mymodule.py,你想要从这个模块中导入名为 myfunction 的函数。下面是如何处理这种情况的步骤:

  1. 将模块所在的目录添加到 sys.path
import sys 
sys.path.insert(0, '/path/to/module') 

使用 sys.path.insert(0, '/path/to/module') 将模块所在目录添加到搜索路径的开始,确保它在搜索时会首先被考虑。

  1. 现在你可以使用通常的 from ... import ... 语法来导入你的函数了:
from mymodule import myfunction 

这样,myfunction 将从 /path/to/module/mymodule.py 文件中导入。

请注意,这样做可能会导致模块路径冲突,尤其是当你添加的路径包含有与标准库或第三方库重名的模块时。在实际项目中,通常建议使用相对路径(对于包内的模块)或设置合适的项目结构,而不是直接修改 sys.path

如果你正在使用包结构,也可以使用相对导入:

# 假设当前文件在 /path/to/module/submodule/ 下 
from .. import mymodule 

这里,.. 表示上一级目录,因此 mymodule 会从 /path/to/module/ 导入。 在进行模块导入时,请确保遵守 Python 的包和模块命名规范,以及考虑到模块查找路径的顺序,这样可以避免潜在的导入错误和冲突。

在进行rt-thread 编译的时候,在from building import * 处一直报错

sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')]
print(sys.path)
try:from building import *
except:print('Cannot found RT-Thread root directory, please check RTT_ROOT')print(RTT_ROOT)exit(-1)

后面将其修改为:

sys.path.insert(0, os.path.join(RTT_ROOT, 'tools'))
#sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')]
print(sys.path)
try:from building import *
except:print('Cannot found RT-Thread root directory, please check RTT_ROOT')print(RTT_ROOT)exit(-1)

编译问题

在编译时一直报下面问题:

/usr/include/newlib/time.h:56:1: error: unknown type name 'clock_t'; did you mean '_flock_t'?

方案
在文件rtconfig.py]中 添加:

CFLAGS = DEVICE + ' -Dgcc -D_POSIX_C_SOURCE=200809L'

_POSIX_C_SOURCE 介绍

_POSIX_C_SOURCE 是一个宏定义,用于启用特定版本的 POSIX 兼容性特性。POSIX(Portable Operating System Interface)是一个旨在促进 UNIX 操作系统兼容性的标准集合,它定义了一系列跨不同 UNIX 系统的应用程序编程接口(API)。

在 C 语言源文件中定义 _POSIX_C_SOURCE 宏可以告诉编译器程序打算使用哪个版本的 POSIX 标准。这个宏的值是一个长整数,指定了希望遵循的 POSIX 标准的版本年份。

例如:

#define _POSIX_C_SOURCE 200809L 

上面这行代码指示编译器启用 2008 年发布的 POSIX 标准中定义的特性。这可以确保在包含头文件时,只有那些与指定版本兼容的特性和函数原型被包含进来。

在配置编译环境时,你可以在命令行(编译选项中)或源文件的开始处定义这个宏。在命令行中,你可以使用 -D 选项定义它:

gcc -D_POSIX_C_SOURCE=200809L -o my_program my_program.c 

在源文件中定义它要确保在包含任何标准库头文件之前定义该宏:

#define _POSIX_C_SOURCE 200809L 
#include <stdio.h> 
#include <unistd.h> 
// 其他标准头文件 

这样确保了在编译时,你的程序能够访问与定义的 POSIX 版本兼容的函数和特性。

编译结果

...
LINK rtthread.elf
arm-none-eabi-objcopy -O ihex rtthread.elf rtthread.hex
arm-none-eabi-size rtthread.elftext    data     bss     dec     hex filename46764    2460    2548   51772    ca3c rtthread.elf
arm-none-eabi-objcopy -O binary rtthread.elf rtthread.bin
arm-none-eabi-size rtthread.elftext    data     bss     dec     hex filename46764    2460    2548   51772    ca3c rtthread.elf
scons: done building targets.

至此成功编译。

推荐阅读
https://stackoverflow.com/questions/34174471/how-can-i-put-thumb-conditional-instruction-into-it-block

http://www.yayakq.cn/news/235995/

相关文章:

  • 如何解决网站只收录首页的一些办法营销网站建设规划方案
  • 开发小网站一般多少钱一个免费企业网站模板下载
  • 系统开发生命周期关键词优化的技巧
  • 网站做友链有什么用s9视频直播
  • 深圳网站建设推选上榜网络雅布设计有多牛
  • wordpress 支付插件台州百度推广优化
  • 目录搜索引擎网站wordpress跳转安装
  • 儿童可以做的游戏视频网站优化网站seo方案
  • 网站建设 慕课wordpress设置视频图片不显示
  • 自己做网站iis设置个股期权网站开发
  • 做网上竞猜网站合法吗wordpress扫码跳转
  • 好的外贸网站建设安徽省建设厅官方网站进不去
  • 民非企业网站建设费怎么记账深圳商业网站建设推荐公司
  • 读书网站建设策划书网站开发流行
  • 网络事件营销案例佛山seo外包平台
  • 延边州住房城乡建设局网站安全教育平台登录入口网址
  • 超大尺寸哔哩哔哩网站外贸企业网络营销
  • 宜宾网站建设略奥网络用一部手机制作网站
  • 福田做网站做网站是什么软件
  • 宝和网站建设杭州企业推广网站
  • 网站的功能和特色工程师招聘网站
  • 保姆给老人做爰神马网站无法访问wordpress官网
  • 网站建设模板购买广州穗科建设监理有限公司网站
  • 企业推广建站wordpress 1.0
  • 镇江教育云网站建设广州app开发平台
  • js 网站制作重庆江北网站建设公司
  • 网站 设计 趋势shopex整合wordpress
  • 如何评价一个企业网站做的好商河县做网站公司
  • 可以做兼职翻译的网站奥联网络网站建设
  • 网站建设 牛商网专业营销软件网站建设