【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;
}
相关推荐
Lu Zelin6 小时前
单片机为什么不能跑Linux
linux·单片机·嵌入式硬件
CS Beginner7 小时前
【Linux】 Ubuntu 开发环境极速搭建
linux·运维·ubuntu
ajassi20007 小时前
开源 C++ QT QML 开发(二)工程结构
linux·qt·qml
今天只学一颗糖8 小时前
Linux学习笔记--insmod 命令
linux·笔记·学习
摩羯座-185690305948 小时前
爬坑 10 年!京东店铺全量商品接口实战开发:从分页优化、SKU 关联到数据完整性闭环
linux·网络·数据库·windows·爬虫·python
irisart9 小时前
4.1 > Linux 文件/目录权限管理【理论】
linux
---学无止境---9 小时前
Linux中poll的实现
linux
爱倒腾的老唐10 小时前
13、Linux 基本权限
linux·运维·服务器
罗政10 小时前
CentOS 7.6 系统源码部署 HivisionIDPhotos
linux·运维·centos
cililin11 小时前
第4章 文件管理
linux·服务器·网络·操作系统·unix