所有北京网站建设公司,网站开发的策划方案,安徽省住建厅网站官网,建设网站对公司起什么作用是什么一、概述 Linux操作系统通常是基于Linux内核#xff0c;并结合GNU项目中的工具和应用程序而成。Linux操作系统支持多用户、多任务和多线程#xff0c;具有强大的网络功能和良好的兼容性。本文主要讲述如何在linux系统上进行应用开发。
二、概念及原理 应用程序通过系统调用与…一、概述 Linux操作系统通常是基于Linux内核并结合GNU项目中的工具和应用程序而成。Linux操作系统支持多用户、多任务和多线程具有强大的网络功能和良好的兼容性。本文主要讲述如何在linux系统上进行应用开发。
二、概念及原理 应用程序通过系统调用与内核进行交互而驱动程序则提供了硬件设备的访问接口内核本身则提供了系统调用、驱动框架等基础设施。 驱动开发Linux 驱动开发是指为 Linux 内核开发各种设备驱动程序用于控制和管理硬件设备。驱动程序运行在内核空间直接与硬件进行交互。Linux 内核提供了丰富的接口和框架开发者可以编写各种类型的设备驱动包括网络设备、存储设备、输入设备等。驱动程序通过内核提供的接口与用户空间的应用程序进行通信。 应用开发Linux 应用开发是指在 Linux 系统上开发各种类型的应用程序包括命令行工具、图形界面应用、服务器端应用等。Linux 提供了丰富的开发环境和工具链开发者可以使用各种编程语言和开发工具进行应用开发。应用程序运行在用户空间通过系统调用与操作系统内核进行交互执行各种任务和功能。 内核开发Linux 内核开发是指对 Linux 内核本身进行开发和维护。Linux 内核是操作系统的核心负责管理系统资源、调度任务、提供系统调用等功能。内核开发包括对内核功能的添加和修改修复内核漏洞优化性能等工作。内核开发人员通常会编写和维护内核的各种子系统和模块包括调度器、文件系统、网络协议栈等。
三、准备工作
安装虚拟机VMware安装ubuntu 22.04安装vim、vscode等工具
sudo apt update
sudo apt install vim code四、操作步骤
helloworld应用开发 新建一个helloworld.c可以在界面上直接新建一个文件也可以使用vim新建文件vim helloworld.c在文件中写一个最简单的代码。
#include stdio.hint main(void)
{printf(hello world\n);return 0;
}使用ubuntu系统自带的gcc编译器对helloworld.c文件进行编译生成a.out文件。
gcc helloworld.c在终端中执行a.out文件执行方式如下
./a.out执行后可以看到应用程序打印出hello world到这里最基本的应用开发就完成了。这应用开发比想像中简单。 这个a.out是编译默认生成的名字为了后期开发的便利这里我们指定输出成和.c源文件名字一样。只要在编译的时候增加-o name就可以指定输出文件名。
gcc helloworld.c -o helloworld生成Makefile文件 为了兼容Linux的编译方式这里我们再引入Makefile的编译方式。在helloworld.c同一级目录下新建一个Makefile文件不需要后缀。在文件中添加如下代码。
# 定义编译器和编译选项
CC gcc
CFLAGS -Wall -g# 定义目标文件和源文件
TARGET helloworld
SRCS helloworld.c
OBJS $(SRCS:.c.o)# 默认构建规则
all: $(TARGET)# 生成目标可执行文件
$(TARGET): $(OBJS)$(CC) $(CFLAGS) -o $ $^# 生成目标文件
%.o: %.c$(CC) $(CFLAGS) -c -o $ $# 清理生成的文件
clean:rm -f $(OBJS) $(TARGET)
其中
定义了编译器及编译选项CC定义了编译器为gccCFLAGS定义了一些编译选项如-Wall表示显示所有警告-g表示生成调试信息。定义了目标文件和源文件TARGET定义了最终生成的可执行文件名为helloworldSRCS定义了源文件列表OBJS则是所有源文件对应的目标文件列表。定义了默认构建规则all它依赖于目标文件$(TARGET)。定义了生成目标可执行文件的规则使用了特殊变量$和$^分别表示目标文件和所有依赖文件。定义了生成目标文件的规则使用了通配符%.o表示所有的目标文件使用了特殊变量$表示第一个依赖文件。定义了清理规则clean用于清理生成的目标文件和可执行文件。
make编译 在当前文件目录下使用make指令即可对当前目录的文件进行编译。 同样的使用以下指令即可调用应用程序。
./helloworld五、相关链接
【学习记录】从0开始的Linux学习之旅——驱动模块编译与加载 【学习记录】从0开始的Linux学习之旅——编译linux内核