LinuxGod

LinuxGod.net
Linux大神网——精选每一篇高品质的技术干货
  1. 首页
  2. 开源快讯
  3. 正文

的Linux操作系统怎样执行?

2023年5月11日 373点热度

从接触linux系统下编程,始终困惑着我一个问题,就是我的程序应当如何运行。曾经学习裸机程序和单片机程序的时侯linux操作系统下载,不用考虑这一问题,写好的程序直接在上电的时侯直接由启动代码运行我的main函数。而且在有操作系统的情况下,我编译好的程序如何执行呢?总不能我每次要自动去执行啊~!纠结了三年了,呵呵,从2010.12月到2011.1月,期间边学习linux下编程红旗linux安装,边找寻这方面的资料,哎,据说这些技术对人家很简单啊,百度上的极少,总算找到一篇,如下;

开机后手动运行用户的应用程序或启动系统服务的命令保存在开发板根文件系统的/usr/etc/rc.local文件中。有的开发板开机后手动运行图形界面程序,须要按住ctrl+c让开发板步入到linux的SHELL提示符界面。虽然可通过注释掉rc.local文件中调用图形界面的命令,降低运行用户应用程序的命令,达到开机手动运行用户应用程序的目的。

下边以我做的实验为例,描述具体的实现步骤。该方式始于网路,我加以验证,稍做更改,此文相当于转载。

1.步入pc机的Linux操作系统,在/nfs/usr/下通过mkdirlz命令新建一个名为lz的文件夹,步入lz文件夹,通过mkdirhello新建一个hello文件夹拿来储存我们即将编撰的hello.c文件和编译生成的可执行文件。

2.在/nfs/usr/lz/hello下通过vihello.c命令新建hello.c文件,编辑如下测试程序:#includeintmain(){printf("Hello,testarm-linux!n");return0;}完成编辑后通过:wq保存后退出。

3.主机通过如下命令交叉编译环境编译hello.c:#arm-linux-gcc–ohellohello.c

4.通过ls命令可以看见在/nfs/usr/lz/hello/下早已生成了hello可执行文件,我们可以在开发板上通过./hello来测试自己编撰的hello.c执行情况

5.更改rc.local文件,在文件的最后通过‘#’释掉启动图形界面的指令,降低执行用户应用程序hello的指令,具体实现如下:#exportPATH=$QPEDIR/bin:$PATH#qtopia#/usr/qtopia/bin/qtopia/usr/lz/hello/./hello注:前三行是注释掉启动图形界面,最后一行是添加的执行用户的hello测试程序。

6.重启开发板,通过vivi参数配置让开发板通过nfs挂载主机上的文件系统,这时我们就可以通过超级终端听到开发板早已运行了我们编撰的hello程序。

这个给了我很大启发,我就沿着rc.local结合自己的板子来试验哈,我的是GT2440的板子,上面没有rc.local,然而发觉有个rcS,原先这就是启动脚本,打开我的rcS如下:[[email protected]]#cat/etc/init.d/rcS

#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:

runlevel=S

prevlevel=N

umask022

exportPATHrunlevelprevlevel##TrapCTRL-C&conlyinthisshellsowecaninterruptsubprocesses.#

trap":"INTQUITTSTP/bin/hostnameGTStudio

/bin/mount-n-tprocnone/proc

/bin/mount-n-tsysfsnone/sys

/bin/mount-n-tusbfsnone/proc/bus/usb

/bin/mount-tramfsnone/dev

echo/sbin/mdev>/proc/sys/kernel/hotplug/

sbin/mdev-s#mountingfilesystemspecifiedin/etc/fstab

mkdir-p/dev/pts

mkdir-p/dev/shm/bin/

mount-n-tdevptsnone/dev/pts-omode=0622

/bin/mount-n-ttmpfstmpfs/dev/shm

/bin/mount-n-tramfsnone/tmp

/bin/mount-n-tramfsnone/var

mkdir-p/var/empty

mkdir-p/var/log

mkdir-p/var/lock

mkdir-p/var/run

mkdir-p/var/tmp

/sbin/hwclock-ssyslogd/etc/rc.d/init.d/netdstart

echo"">/dev/tty1

echo"Startingnetworking...">/dev/tty1

sleep1

etc/rc.d/init.d/httpdstart

echo"">/dev/tty1echo"Startingwebserver...">/dev/tty1

sleep1

/etc/rc.d/init.d/ledsstart

echo"">/dev/tty1

echo"Startingledsservice...">/dev/tty1

echo""

sleep1

/sbin/ifconfiglo127.0.0.1/etc/init.d/ifconfig-eth0/

bin/qtopia&echo"">/dev/tty1

echo"StartingQtopia,pleasewaiting...">/dev/tty1

在这基础上我做了二个实验,第一个就是在usr/sbin下复制写好的openclose程序,在bin/etc/rc.d/init.d下编译脚本如下:#!/bin/sh

base=openclose#Seehowwewerecalled.

case"$1"instart)/usr/bin/$base&;;stop)

pid=`/bin/pidof$base`

if[-n"$pid"];

thenkill-9$pid

fi;;

esacexit0

刚开始以为这样就可以了,重启板子后linux自动运行,发觉没有运行,研究了哈/etc/init.d和/etc/rc.d/init.d的区别和联系,发觉还得再/etc/init.d/rcS的脚本里写进echo"Startingopenclose">/dev/tty1/etc/rc.d/init.d/openclosestart这样能够运行,同样倘若输入/etc/rc.d/init.d/openclosestop则不能运行程序,我的理解是这etc/inir.d须要有指向etc/rc.d/init.d/openclose的句子linux自动运行,能够决定是否执行(startorstop)openclose里的指向程序(本实验室中base=openclose).第二个实验就是尝试在etc/inir.d/rcS里直接运行我的程序,刚开始通过直接入./mns/nfs/writeread/arm-linux-gcc-4.3.3/writeread(我这儿是通过nfs服务来运行我的程序的),发觉不能运行,后来还是把writeread拷贝到usr/sbin里,这样通过./usr/sbin/writeread开机能够直接运行了。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: bin bin文件 dev etc linux系统
最后更新:2023年5月11日

Linux大神网

每日更新,欢迎收藏♥ 不积跬步无以至千里,加油,共勉。

点赞
< 上一篇
下一篇 >

Linux大神网

每日更新,欢迎收藏♥
不积跬步无以至千里,加油,共勉。

最新 热点 随机
最新 热点 随机
Linux下如何使用vsftpd构建后的FTP服务器有哪些特点 Gcc编译器编译语言:C运行库C语言标准 提高网络编程功力的不二之选——Socket/IP协议 C语言教程之linuxC编程实战:linux电子书 #Ubuntu查看防火墙的状态#添加开放普通端口开放22:开启完成 Ubuntu18.04上安装GCC编译器通过终端执行以下命令命令 2019年Linux操作系统启动流程介绍-苏州安亲宝 如何安装Windows10下的WSL和mkfontdir命令? 获取内核源码:阅读linux内核设计的艺术 如何操作Linux启动盘?的安装目录信息详解 (多图预警)多篇Linux(centos7)安装流程 Ubuntu22.04最终发布最终RC版本号召大家积极进行进行测试 如何在Linux安装字体中用到各种命令如mkfontscale? 自带几个预设,你可以在Numix、Arc或Materia主题样式上创建自己的GTK主题 (架构)为什么要在Linux下写C++程序? Ubuntu中各种类型频繁发生的更新错误以及修复方法 图1.3编程的7个步骤,你知道吗? 虚拟机Linux安装教程及安装流程介绍-苏州安嘉 常用且流行的Linuxshell脚本编写工具:/Vim编辑器 Linux下统计C语言程序执行时间的几种常用方法
:身份证明检索失败开始->进程的配置文件微控制器简化存储数据的组织形式如何从Elrepo或者源代码来安装最新的Linux内核4.0Linux下ldd命令的使用方法本身不是一个程序炫龙毁灭者DC还是不能关机和重启内核的窝如何在Ubuntu下修改root用户的密码?Linux系统迁移到另一个硬盘小时就迁移完成了炫龙毁灭者DC还是不能关机和重启内核的窝如何使用Python处理文件数据-程序员必读结合虚拟化技术分析Linux系统的一般执行过程Linux中常用的域名解析命令包括哪些?(回答)炫龙毁灭者DC还是不能关机和重启内核的窝VMware如何安装UbuntuWorkstation虚拟机的博客~(官方个人免费版)开发嵌入式Linux按键驱动程序开发-电脑版软件功能强大,界面简洁明晰、操作方便快捷CentOS8安装新的java环境卸载老版本下载环境介绍Android终端仿真器安装Python的注意事项!!在Linux系统中安装和配置JDK有两种方法可以选择当前Linux系统的版本的方法及使用方法系统管理员使用的系统级别的管理命令和程序包
AMD2950x+技嘉x399免驱USB网卡,我的无线网卡 test下的所有文件压缩成test.zip,并设置密码 如何判断端口是否放通?模块清单修改配置项 我们如何才能破解安卓设备呢?留下的后门权限 虚拟机Linux安装教程及安装流程介绍-苏州安嘉 SteelEyeLifeKeeper集群软件关键特性企业数据中心 Linux系统chmod命令使用数字修改文件权限的方式有哪些? CentOS6.5中安装和配置IP地址的步骤和基本步骤 知一能量linux查看系统信息命令是linux初学者必备的基础知识 如何在Linux系统上下载和安装Steam呢?如何操作 linux下mysql中可以使用REVOKE语句来删除某个用户的权限 C语言教程之linuxC编程实战:linux电子书 在Linux中轻松删除单个文件、文件组或整个文件夹 VS2015安装VC_Linux.exe安装VS2015软件和Linux系统 linux下有哪些文件在介绍lsof命令实用用法介绍? linux软件访问官网下载版本的文件夹软件下载 在线转换工具:北京时间和UNIX时间戳和标准 创建新用户账号,轻松管理Linux用户 ubuntu格式化硬盘ext4 Linux环境新磁盘配置方法资料质量不尽如人意 解决ssh连接提示(A,突然连不了了)
标签聚合
虚拟机 应用 软件 linux系统 文件 操作 内核 linux服务器 命令 文件目录
书籍
课程
技术群
技术干货大合集↓
  • 2023年12月 / 15篇
  • 2023年11月 / 88篇
  • 2023年10月 / 94篇
  • 2023年9月 / 90篇
  • 2023年8月 / 93篇
  • 2023年7月 / 94篇
  • 2023年6月 / 90篇
  • 2023年5月 / 93篇
  • 2023年4月 / 90篇
  • 2023年3月 / 129篇
  • 2023年2月 / 84篇
  • 2023年1月 / 161篇
  • 2022年12月 / 187篇
  • 2022年11月 / 76篇
友情链接:

Linux书籍 | Linux命令 | Linux系统 | RHCE红帽认证 | Linux软件 | Linux教程 | CentOS系统 | Linux内核 | Linux服务器 | Linux大神 | IT资源

COPYRIGHT © 2024 linuxgod.net ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang