linux
洪流之源
这个作者很懒,什么都没留下…
展开
-
linux下通过shell命令将某目录下图片路径导入到指定的文件中
上述目录下存在0、1、2三个目录,三个目录下存储图片,通过如下三个命令进行导入:ls -R /home/liuhongyuan/workspace/train_ws/resnet18/data/datasets/train/0/*.jpg > 0.txtls -R /home/liuhongyuan/workspace/train_ws/resnet18/data/datasets/train/1/*.jpg > 1.txtls -R /home/liuhongyuan/w..原创 2021-01-12 18:47:47 · 1456 阅读 · 0 评论 -
c++ 遍历目录下的文件
#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include <dirent.h>#include <iostream>#include <string.h>#include <stdio.h>#include <fcntl.h>#include <stdlib.h>#include <vecto.原创 2020-12-02 13:53:46 · 950 阅读 · 0 评论 -
fork与fork函数
一个现有的进程可以调用fork与vfork函数原创 2014-05-02 17:23:46 · 974 阅读 · 0 评论 -
eclipse集成开发环境搭建与裸机程序调试
eclipse集成开发环境搭建与裸机程序调试硬件连接:PC用jlink仿真器、转串口与开发板连接好,开发板从nandflash启动;软件准备:gdb-serer、jlink软件、eclipse;调试程序:led.lds、led.S、Makefile;一.安装gdb-server1.解压arm-linux-gdb-7.5.tar.gz:tarxvzf arm-linux-原创 2014-03-22 20:25:07 · 1780 阅读 · 0 评论 -
makefile 简单应用
Makefile简单应用(1).Makefile中最重要的组成部分是”规则“,规则:用于说明如何生成目标文件,规则的格式如下:targets:prerequisitescommand目标依赖 命令特别提供:命令需要使用【tab】键空格。目标只有一个,依赖、命令可以有多个。makefile中把那写只有命令,没有依赖的目标称为“伪目标”(phonytargets).原创 2014-03-19 19:08:11 · 687 阅读 · 0 评论 -
交叉工具链的简单应用
交叉工具链交叉工具名+--help可以查看帮助交叉编译器:arm-linux-gcc,arm-linux-gcc --help查看-print-search-dirs选项。arm-linux-gcc -print-search-dirs可以查看arm-linux-gcc安装位置,以及库的位置,arm-linux-gcc-g -c hello.c 只编译不链接。交原创 2014-03-19 19:11:14 · 921 阅读 · 0 评论 -
连接器脚本
连接脚本GNU-ld链接脚本浅析本文乃转载, 某人在其基础上做了少量修改。 原作者的E-mail是.ac.cn。 完成于2005.11.5-2005.11.80。 Contents1。 概论2。 基本概念3。 脚本格式4。 简单例子5。 简单脚本命令6。 对符号的赋值7。 SECTIONS命令8。 MEMORY命令9。 PHDRS命令10。转载 2014-03-19 20:23:23 · 726 阅读 · 0 评论 -
进程的终止exit函数
进程就像人的生命一样,有创建也有终止原创 2014-05-05 15:29:34 · 1679 阅读 · 1 评论 -
Linux内核的组成
Linux内核主要有进程调度(SCHED)、内存管理(MMU)、虚拟文件系统(VFS)、网络接口(NET)、进程通信(IPC)5个子系统组成。1. 进程调度进程调度控制系统中多个进程对CPU的访问,使得多个进程能够在CPU中“微观串行,宏观并行”地执行。进程调度处于系统的中心位置,内核中其它子系统都依赖它,因为每个子系统都需要挂起或恢复进程。在设备驱动编程中,当请求的资源不被满足原创 2014-07-26 20:40:34 · 985 阅读 · 0 评论 -
linux内核模块参数
在装载内核模块时,用户可以向模块传递参数,形式为:insmod/modprobe 模块名 参数名 = 参数值如果不传递,参数将使用模块内定义的缺省值。 我们可以使用以下方法为模块定义一个参数:module_param(参数名,参数类型,参数读/写权限);如下代码定义了一个整型参数:static int num = 4000 ;module_param(num原创 2014-07-30 14:30:39 · 2536 阅读 · 0 评论 -
linux内核模块简介
内核模块的特模块本身不被编译入内核映像,从而控制了内核的大小;模块一旦被加载,它就和内核中的其它部分完全一样。内核加载命令,以hello.ko为例:insmod./hello.ko内核卸载命令:rmmodhello内核中用于输出的函数是内核空间的printk()而非用户空间的printf(),printk( )的用法和printf()基本相似,但前者可以定义输出级别。原创 2014-07-30 14:45:47 · 456 阅读 · 0 评论 -
module_init和module_exit
一直以来写linux驱动,都是按照固定格式,定义一个初始化和推出函数,书上告诉我这两个函数会被调用,至于为什么会被调用,在哪调用,一直不清楚。偶然的一个机会,看到blob里面的代码,里面有一个初始化函数列表。按照一般的编程想法,各部分的初始化函数会在一个固定的函数里调用比如:void init(void){ init_a(); init_b();} 如果再加转载 2014-07-30 15:07:00 · 795 阅读 · 0 评论 -
linux内核导出符号
linux 2.6转载 2014-07-30 10:47:19 · 822 阅读 · 0 评论 -
Linux设备驱动程序简介
一、驱动程序的特点是应用和硬件设备之间的一个软件层 。这个软件层一般在内核中实现设备驱动程序的作用在于提供机制,而不是提供策略,编写访问硬件的内核代码时不要给用户强加任何策略机制:驱动程序能实现什么功能。策略:用户如何使用这些功能。二、设备驱动分类和内核模块设备驱动类型。Linux 系统将设备驱动分成三种类型字符设备块设备转载 2014-07-31 10:21:45 · 1177 阅读 · 0 评论 -
linux内核模块程序结构
linux内核模块程序结构 一个linux内核模块主要有以下部分组成:(1) 模块加载函数(一般需要)(2) 模块卸载函数(一般需要)(3) 模块许可证声明(必须)许可证(LICENSE)声明描述内核模块的许可权限,如果不声明LICENSE,模块被加载时,将收到内核被污染(kernel tainted)的警告.(4)原创 2014-07-30 15:18:07 · 1197 阅读 · 0 评论 -
linux错误处理
错误处理:函数或者系统调用在失败时会设置外部变量errno的值来指明失败原因(错误码保存在errno中)。并且必须在函数报告出错之后,立即检查errno变量,因为它可能被下一个函数调用所覆盖,即使下一个函数自身并没有出错,也会覆盖这个变量。错误代码(errnum)的取值和含义在errno.h中,可以在man手册查找。有三个有用的函数可以用来报告出现的错误,strerror ,perror原创 2014-10-13 16:20:40 · 806 阅读 · 0 评论 -
fork
1)功能与返回值父进程通过调用fork函数用来创建子进程,父进程被调用一次,但返回两次,返回两次的唯一区别是子进程的返回值是0,父进程的返回值是创建的子进程的进程ID。2)返回值成因至于为什么父进程返回子进程ID,子进程返回0,内核是这样安排的:理想情况下,不管是父进程还是子进程我们都可以直接得到它们的进程ID,但是现实是我们不能直接进行获取,而是通过父进程获取其子原创 2014-10-04 17:10:40 · 534 阅读 · 0 评论 -
mmap系统调用
mmap系统调用(功能)void* mmap ( void * addr , size_t len , int prot , int flags ,int fd , off_t offset )内存映射函数mmap, 负责把文件内容映射到进程的虚拟内存空间, 通过对这段内存的读取和修改,来实现对文件的读取和修改,而不需要再调用read,write等操作。addr:指原创 2014-11-24 13:22:25 · 649 阅读 · 0 评论 -
虚拟内存区域
虚拟内存区域虚拟内存区域是进程的虚拟地址空间中的一个同质区间,即具有同样特性的连续地址范围。一个进程的内存映象由下面几部分组成:程序代码、数据、BSS和栈区域,以及内存映射的区域。一个进程的内存区域可以通过查看/proc/pid/maps08048000-0804f000 r-xp 00000000 08:01 573748 /sbin/rpc.statd #tex原创 2014-11-24 13:45:03 · 1500 阅读 · 0 评论 -
mmap设备操作
mmap设备操作映射一个设备是指把用户空间的一段地址关联到设备内存上。当程序读写这段用户空间的地址时,它实际上是在访问设备。mmap设备方法需要完成什么功能?mmap方法是file_oprations结构的成员,在mmap系统调用发出时被调用。在此之前,内核已经完成了很多工作。mmap设备方法所需要做的就是建立虚拟地址到物理地址的页表。int (*mmap)原创 2014-11-24 13:58:22 · 641 阅读 · 0 评论 -
ssk-keygen + ssh-copy-id 无密码登陆远程LINUX主机
使用下例中ssk-keygen和ssh-copy-id,仅需通过3个步骤的简单设置而无需输入密码就能登录远程Linux主机。 ssh-keygen 创建公钥和密钥。 ssh-copy-id 把本地主机的公钥复制到远程主机的authorized_keys文件上。ssh-copy-id 也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设转载 2015-01-06 16:59:50 · 1567 阅读 · 0 评论 -
ssh-keygen的使用方法
一、概述1、就是为了让两个linux机器之间使用ssh不需要用户名和密码。采用了数字签名RSA或者DSA来完成这个操作2、模型分析假设 A (192.168.20.59)为客户机器,B(192.168.20.60)为目标机;要达到的目的:A机器ssh登录B机器无需输入密码;加密方式选 rsa|dsa均可以,默认dsa 二、具体操作流程转载 2015-01-06 16:52:44 · 500 阅读 · 0 评论 -
ssh-copy-id 如何使用非22端口
服务器时常需要配置无密码的登录方式,最一般的设置方式如下:# ssh-keygen# cat ~/.ssh/id_rsa.pub | ssh user@server "cat - >> ~/.ssh/authorized_keys"其实这方法已经很简单了,不过我总记不清如何正确拼写authorized_keys这个文件名。还好Linux系统里缺省都包含一个名为ssh-c转载 2015-01-06 17:31:02 · 7246 阅读 · 1 评论 -
Linux服务器 scp 不需要密码配置与密钥转换(id_rsa->ppk)
Linux服务器 scp 不需要密码配置案例:▲服务器A对服务器B、C进行ssh连接,免输入密码 或▲服务器A向服务器B、C复制文件(源文件在服务器A上),免输入密码主机A:192.168.0.221主机B:192.168.0.227主机C:192.168.0.2281、首先每个服务器上执行一下命令脚本(主机A、B、C都执行,目的是生成公钥和私转载 2015-01-06 17:27:54 · 1524 阅读 · 0 评论 -
linux下/proc目录介绍
1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文转载 2014-12-03 14:36:22 · 490 阅读 · 0 评论 -
使用xrdp实现windows 远程桌面 ubuntu linux
一般情况下我们用ssh客户端远程登陆Linux系统,至于图形界面下的linux远程登陆工具,我们一般都会想到vnc,但它的安全性不够,在这里,我将介绍XRDP的安装配置方法。我们可以很方便的通过windows远程桌面 linux。xrdp安装配置方法打开终端:依次安装sudo apt-get install xrdpsudo apt-get install转载 2015-01-10 09:48:25 · 1974 阅读 · 0 评论 -
Linux中profile、bashrc、bash_profile之间的区别和联系
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.英文描述为:# /etc/profile# System wide environment and startup programs, for login setup# Functions and alia转载 2015-01-13 10:26:25 · 441 阅读 · 0 评论 -
安装交叉编译工具链
安装交叉编译工具链1.在任意目录下解压交叉工具链包,使用命令:tar xvzfarm-linux-gcc-4.3.2.tar -C/注意:C后面有个空格,并且C是大写的,它是英文单词“Change”的第一个字母,在此是改变目录的意思。执行该命令,将把arm-linux-gcc安装到/usr/loca/arm/4.3.2目录。2.修改环境变量:把交叉编译器的路径加入到PATH转载 2014-03-17 23:06:59 · 1127 阅读 · 0 评论 -
Linux下静态库与动态库的生成与使用
文件预览文件目录树如下,如你所见,非常简单。libtest/ |-- lt.c |-- lt.h `-- test.c 代码#lt.c/* lt.c * */ #include void myprint(void) { printf("Linux li原创 2015-09-07 20:54:51 · 646 阅读 · 0 评论 -
/etc/ld.so.conf文件
原文地址:http://blog.sina.com.cn/s/blog_4cce4f6a0100ms6f.html 作者:方人也 Linux 系统上有两类根本不同的 Linux 可执行程序。 第一类是静态链接的可执行程序。静态可执行程序包含执行所需的所有函数。换句话说,它们是“完整的”。因为这一原因,静态可执行程序不依赖任何外部库就可以运行。第二类是动态链接的可执行程序。 接下来我们比较一下转载 2016-03-30 20:03:09 · 839 阅读 · 0 评论 -
linux 头文件
本文介绍了linux 下gcc头文件指定方法,以及搜索路径顺序的问题。一.#include 与#include “”#include 直接到系统指定的某些目录中去找某些头文件。#include “”先到源文件所在文件夹去找,然后再到系统指定的某些目录中去找某些头文件。二.gcc指定头文件的三种情况:1.会在默认情况下指定到/usr/include文件夹(更深层次的是一个相对原创 2016-03-31 10:18:35 · 456 阅读 · 0 评论 -
Linux指定动态库路径
linux指定动态库路径包括:1.指定编译时动态库路径;2.指定运行时动态库路径。后文提到的动态库路径都是指的是这两种路径。众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib(不管是编译还是运行都会默认搜索这两个路径)。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库,并且该动态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加原创 2016-03-31 17:12:18 · 14976 阅读 · 2 评论 -
解决Clock skew detected.
问题:[ 92%] Building C object CMakeFiles/dyna.x.dir/mystrings/StrEdit.c.o[100%] Building C object CMakeFiles/dyna.x.dir/mystrings/mystring.c.oLinking C executable dyna.xmake[1]: Warning: File `S转载 2016-04-06 14:09:09 · 1559 阅读 · 0 评论 -
CMake交叉编译配置
from:http://www.tuicool.com/articles/yAFnQ3很多时候,我们在开发的时候是面对嵌入式平台,因此由于资源的限制需要用到相关的交叉编译。即在你host宿主机上要生成target目标机的程序。里面牵扯到相关头文件的切换和编译器的选择以及环境变量的改变等,我今天仅仅简单介绍下相关CMake在面对交叉编译的时候,需要做的一些准备工作。CMake给交叉编译预转载 2016-04-14 10:21:06 · 3190 阅读 · 2 评论 -
CMake Cross Compiling
Cross compiling is supported by CMake starting with version 2.6.0.Cross compiling means that the software is built for a different system than the one which does the build.This meansCMake cannot转载 2016-04-14 10:22:33 · 2484 阅读 · 0 评论 -
vim配置及插件安装管理(超级详细)
1写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重要啊, 估计很多人就是卡在这个门槛上了, "工欲善其事, 必先利其器"嘛, 我想如果有一个很好用的IDE, 那些Linux牛人也会欢迎的. 这都是劳动人民的美好愿望罢了转载 2016-04-20 20:51:41 · 541 阅读 · 0 评论 -
机器学习资源
Deep Learning(深度学习)ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):一ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):二Bengio团队的deep learning教程,用的theano库,主要是rbm系列,搞python的可以参考,很不错。deeplearning.net主页,里面包含的转载 2016-05-23 15:37:07 · 662 阅读 · 0 评论 -
linux串口编程 非规范模式 read()问题
在linux下编写终端程序时,有规范模式 ,非规范模式(原始模式特殊的非规范模式)之分。不用于终端,而是在串口这种使用情况下,一般设置为原始模式(非规范的一种特殊情况)。但用read()函数,希望从串口接收指定的数量的字符时,往往接收到的实际字符数,都与指定的不同。如本人用read()希望接收 10 bytes的数据,但实验后发现,分了几次才接收到,俩次接收2bytes ,两次接收3bytes转载 2016-07-12 13:43:36 · 6828 阅读 · 0 评论 -
linux 串口阻塞与非阻塞参数设置
在串口设置中,有以下两个参数可以决定是否阻塞。在打开串口时不加O_NODELAY,可用下面的第二种方法,来进行阻塞/非阻塞的设定 c_cc[VTIME] 非规范模式读取时的超时时间(单位:百毫秒),可以这么理解,从接收到后一个字节开始计时,如果超时,则退出READ c_cc[VMIN] 非规范模式读取时的最小字符数,设为0则为非阻塞,如果设为其它值则阻塞,直到读到到对转载 2016-07-14 14:19:37 · 1505 阅读 · 0 评论 -
arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
命名规则交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi]arch - 体系架构,如ARM,MIPSvendor - 工具链提供商os - 目标操作系统eabi - 嵌入式应用二进制接口(Embedded Application Binary Interface)根据对操作系统的支持与否,ARM GCC可分为支持和不支持操作系统,如转载 2016-07-15 16:58:27 · 583 阅读 · 0 评论