【Linux】Linux应用开发小经验

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

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

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


目录

[1 关于编译命令](#1 关于编译命令)

[1.1 CC](#1.1 CC)

[2 设置自启动](#2 设置自启动)

[3 一些技巧](#3 一些技巧)

[3.1 获取微秒级时间](#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 获取微秒级时间

cpp 复制代码
#include <sys/time.h>
long getMicrotime()
{
    struct timeval currentTime;
    gettimeofday(&currentTime, NULL);
    return currentTime.tv_sec * (int)1e6 + currentTime.tv_usec;
}
相关推荐
sanggou1 小时前
Linux批量执行工具脚本使用指南:一键运行多个release-dev.sh脚本
linux·bash
牧以南歌〆5 小时前
在Ubuntu主机中修改ARM Linux开发板的根文件系统
linux·arm开发·驱动开发·ubuntu
夜月yeyue7 小时前
设计模式分析
linux·c++·stm32·单片机·嵌入式硬件
kfepiza7 小时前
Debian的`/etc/network/interfaces`的`allow-hotplug`和`auto`对比讲解 笔记250704
linux·服务器·网络·笔记·debian
cuijiecheng20188 小时前
Ubuntu下布署mediasoup-demo
linux·运维·ubuntu
独行soc10 小时前
2025年渗透测试面试题总结-2025年HW(护网面试) 33(题目+回答)
linux·科技·安全·网络安全·面试·职场和发展·护网
java龙王*10 小时前
开放端口,开通数据库连接权限,无法连接远程数据库 解决方案
linux
bcbobo21cn11 小时前
Linux命令的命令历史
linux·histsize·histfile
jingyu飞鸟12 小时前
linux系统源代码安装apache、编译隐藏版本号
linux·运维·apache
世事如云有卷舒12 小时前
Ubunt20.04搭建GitLab服务器,并借助cpolar实现公网访问
linux·服务器·gitlab