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

【Linux】Linux应用开发小经验

基于Petalinux工具链的Linux应用开发小经验,未完待续...

部分图片和经验来源于网络,若有侵权麻烦联系我删除,主要是做笔记的时候忘记写来源了,做完笔记很久才写博客。

 专栏目录:记录自己的嵌入式学习之路-CSDN博客


目录

1    关于编译命令

1.1    $CC

2    设置自启动

3    一些技巧

3.1    获取微秒级时间


1    关于编译命令

1.1    $CC

        当运行 $CC 命令时,实际上使用的是以下命令:

arm-xilinx-linux-gnueabi-gcc -mthumb -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9 -fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/opt/pkg/petalinux_sdk/sysroots/cortexa9t2hf-neon-xilinx-linux-gnueabi

        这些参数定义了编译器的行为和生成的目标代码的特性。下面是每个参数的解释:

(1)    arm-xilinx-linux-gnueabi-gcc:这是交叉编译器的名称,用于编译针对ARM架构的代码,特别是针对Xilinx FPGA设备的。gnueabi指的是 GNU EABI(嵌入式应用程序二进制接口)。

(2)    -mthumb:这个选项指定生成Thumb指令集的代码,这是一种16位的指令集,用于ARM架构,可以减少代码大小。

(3)    -mfpu=neon:这个选项指定浮点单元(FPU)为NEON,这是一种SIMD(单指令多数据)架构,用于ARM处理器,可以加速多媒体和信号处理应用。

(4)    -mfloat-abi=hard:这个选项指定使用硬浮点ABI(应用程序二进制接口),意味着浮点运算将使用硬件浮点单元。

(5)    -mcpu=cortex-a9:这个选项指定目标CPU为ARM Cortex-A9。

(6)    -fstack-protector-strong:这个选项启用了强栈保护,这是一种安全特性,用于防止缓冲区溢出攻击。

(7)    -O2:这是优化级别,-O2 表示优化编译器生成的代码以提高性能,同时保持代码大小和性能之间的平衡。

(8)    -D_FORTIFY_SOURCE=2:这个宏定义用于启用额外的安全检查,以检测某些类型的缓冲区溢出。

(9)    -Wformat 和 -Wformat-security:这些选项启用了对格式化字符串的警告,帮助检测可能导致安全问题的格式化字符串的使用。

(10)    -Werror=format-security:这个选项将格式化安全警告视为错误,这意味着如果检测到潜在的安全问题,编译将失败。

(11)    --sysroot=/opt/pkg/petalinux_sdk/sysroots/cortexa9t2hf-neon-xilinx-linux-gnueabi:这个选项指定了系统根目录,编译器将使用这个目录中的库和头文件来编译程序。

2    设置自启动

        可在/etc/profile.d路径新建自己的.sh脚本,然后chmod 777。

        但需要注意的是,设置了自启动就不要将uboot中的bootargs环境变量设置为具有console=ttyPS0,115200内容的了,如果指定了串口,那么串口不连接,系统根本启动不了,更别说应用了。会卡在uboot的命令行中。

3    一些技巧

3.1    获取微秒级时间

#include <sys/time.h>
long getMicrotime()
{struct timeval currentTime;gettimeofday(&currentTime, NULL);return currentTime.tv_sec * (int)1e6 + currentTime.tv_usec;
}


 

相关文章:

  • vmware diffy配置ollama 本机ip无法访问
  • SMT贴片检验标准核心要点与实施规范
  • Learning vtkjs之WindowedSincPolyDataFilter
  • Spring 命名空间注入:p、c 与 .util 的深度解析
  • 54、【OS】【Nuttx】编码规范解读(二)
  • 学习黑客环境配置
  • 参数包展开到初始化列表
  • 高频数据冲击数据库的技术解析与应对方案
  • 《操作系统真象还原》第十二章(2)——进一步完善内核
  • 短信登录功能实现(黑马点评)
  • 山东大学计算机组成与设计第七章习题解析
  • 评估动态化烹饪工艺与营养实训室建设要点
  • NAPPING: 1.0.1靶场(Vulnhub系列)
  • Java框架“若依RuoYi”前后端分离部署
  • 视频编解码学习二之颜色科学
  • 通过Docker部署Prometheus + Grafana搭建监控平台【超详细版】
  • 机器学习常用评价指标
  • 海外新版本开发高端Apple/科技汽车/共享投资理财平台系统
  • FastAPI系列14:API限流与暴力破解防护
  • 机器人编程基础---C语言中的表达式和求值
  • 上音校园春日花艺引路人打卡,阳台音乐会吹响《玫瑰人生》
  • “五一”假期第三天,预计全社会跨区域人员流动量超2.8亿人次
  • 贵州赤水一处岩体崩塌致4车受损,连夜抢修后已恢复通车
  • “三桶油”一季度净赚966亿元:业绩分化加剧,有人欢喜有人愁
  • 证监会副主席王建军被查
  • 开门红背后的韧性密码:上海八大企业的“反脆弱”与“真功夫”