从0开始学linux韦东山教程第四章问题小结(3)
本人从0开始学习linux,使用的是韦东山的教程,在跟着课程学习的情况下的所遇到的问题的总结,理论虽枯燥但是是基础。说实在的越看视频越感觉他讲的有点乱后续将以他的新版PDF手册为中心,视频作为辅助理解的工具。参考手册为嵌入式Linux应用开发完全手册V5.3_IMX6ULL_Pro开发板。
摘要:这节博客主要讲的是,文本特性设置,以及怎么用vs code调试去逐行理解代码,明白其工作原理。文字内容方面不做过多的研究,今后有需求再深入。
摘要关键词:文本特性设置、vs code调试
本文详细介绍以下问题,如果你遇到了以下问题,看看我的方案能否解决。
1.文本特性设置
2.怎么用vs code调试去逐行理解代码,明白其工作原理
ps
ps 是 Linux 中一个用于显示当前系统进程状态的命令。它可以用来查看正在运行的进程,包括进程的PID(进程ID)、CPU占用、内存占用、进程状态等信息。ps 命令非常常见,用于调试、监控系统等。
其实它也就相当于win11中的任务管理器。
cd /proc/3581/fd
/proc 目录:是一个虚拟文件系统,包含了内核和进程的运行时信息。它并不是存储在磁盘上的真实文件,而是内存中的虚拟文件系统,用于提供系统和进程的各种状态信息。
/proc/3581:这个路径表示一个进程的目录,其中 3581 是进程的 ID(PID)。每个进程在 /proc 目录下都有一个以其 PID 为名的子目录,存储该进程的各种信息。
/proc/3581/fd:在 /proc/3581/fd 目录下,每个文件描述符都会对应一个符号链接(symlink),链接指向该文件描述符对应的文件或资源。例如,文件描述符 0 通常是标准输入(stdin),文件描述符 1 是标准输出(stdout),文件描述符 2 是标准错误(stderr)。
cd /proc/3581/fd:该命令使当前工作目录切换到进程 3581 的文件描述符目录。进入这个目录后,你可以使用命令(如 ls -l)查看该进程打开的所有文件描述符,并查看它们指向的实际文件或资源。
假设你运行 ls -l /proc/3581/fd,可能会看到类似以下的输出:
lrwx------ 1 user user 64 May 21 10:30 0 -> /dev/tty1
lrwx------ 1 user user 64 May 21 10:30 1 -> /dev/tty1
lrwx------ 1 user user 64 May 21 10:30 2 -> /dev/tty1
lrwx------ 1 user user 64 May 21 10:30 3 -> /tmp/somefile.txt
3 是指向 /tmp/somefile.txt 文件的文件描述符。0,1,2也就是必须执行的内部文件。、
show_ascii步骤
如图所示,将其传输到Ubuntu上。
执行以下命令行,如上图所示,本人还是犯了一些小错误。比如忘记设置内核,编译地址设置错误等。
export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
cd test
arm-buildroot-linux-gnueabihf-gcc -o show_ascii show_ascii.c
adb push show_ascii /root
通过串口连接开发板,使用adb命令传输文件,检查屏幕输出内容,输出内容如下图所示。一个很小的A。
./show_ascii
以下代码实现了输出一长串文本内容。
void lcd_put_str()
{ char* str1="Hello,RouDragon!";short lenth = strlen(str1);for(int i = 0;i<=lenth ;i++)lcd_put_ascii(var.xres/2+i*10, var.yres/2, str1[i]); /*在屏幕中间显示8*16的字母A*/lcd_put_ascii(var.xres/4, var.yres/4, 'A');
}
具体怎么设置颜色的你猜,其实就是以下这行命令。
lcd_put_pixel(x+7-b, y+i, 0xff0000); /* 红 */
个颜色通道(红、绿、蓝)占用 8 位,红也就是最高八位。设置成ff即可,绿色和蓝色想必你也知道怎么设置了。
查找头文件库
echo 'main(){}'| arm-buildroot-linux-gnueabihf-gcc -E -v -
使用 echo 将 main(){} 作为输入传递给编译器。
使用 arm-buildroot-linux-gnueabihf-gcc 编译器进行预处理,生成详细的调试输出。
在预处理过程中,编译器会执行宏展开、头文件包含等步骤,但不会进行实际的编译。
通过 -v 选项,它会显示编译器详细信息,比如包括头文件搜索路径、使用的宏等。
对于尖括号而言它会去搜索以上内容库。
他那一块有点乱,他首先是将文件libpng-1.6.37.tar.xz上传到了ubuntu中然后进行解压查看有没有configure文件。
如图所示。
./configure --host=arm-buildroot-linux-gnueabihf --prefix=$PWD/tmp
后续本人并没有出现视频中的报错,
还好我的编译链接用的是以上,省了不少麻烦。
export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin