LINUX
我是小超斌
这个作者很懒,什么都没留下…
展开
-
海思编译SDK内核和UBOOT或者MPP报错loadlocale.c:130: _nl_intern_locale_data: Assertion
在~./.bashrc 中添加LC_ACC=C然后source ./.bashrc就可以解决了 网上我还找了一种方法在/etc/default/locale 中更改 这种方法 。 ...原创 2019-05-24 10:44:55 · 2440 阅读 · 3 评论 -
arm Linux平台下FFmpeg的移植
一个视频直播的项目,需要使用嵌入式Linux设备作为一个推流端,所以使用FFmpeg实现推流功能。 libx264是一个自由的H.264编码库,是x264项目的一部分,使用广泛,ffmpeg的H.264实现就是用的libx264。ffmpeg 中带有264的解码,没有编码,需要添加x264。 fdk_aac被许多人认为几乎是最好的aac编码器,音质顺序大概为libfdk_aac>l...原创 2018-09-27 09:17:15 · 2017 阅读 · 0 评论 -
NFS 共享目录
今天用迅为的itop-4412的开发板 挂载nfs 把流程写一下,和遇到的问题。图片用的开发手册的图片 我有的没截图1、搭建 NFS 服务器实现 NFS,需要一个主机作为 NFS 服务器,选择虚拟机 Ubuntu 作为主机。首先需要在在虚拟机 Ubuntu 上安装 Ubuntu NFS 服务,这是一个软件包,可以使用 apt 命令下载(当然,首先要保证虚拟机可以上网)。在 Ubuntu...原创 2018-09-25 17:08:16 · 10295 阅读 · 0 评论 -
NAT穿透(UDP打洞)
转自:http://www.cnblogs.com/GO-NO-1/p/7241556.html 1、NAT(Network Address Translator)介绍 NAT有两大类,基本NAT和NAPT。1.1、基本NAT静态NAT:一个公网IP对应一个内部IP,一对一转换动态NAT:N个公网IP对应M个内部IP,不固定的一对一转换关系 1.2、NAPT(N...转载 2018-09-05 10:46:31 · 1118 阅读 · 0 评论 -
linux驱动面试题2018(面试题整理,含答案)
linux驱动面试题2018(面试题整理,含答案)版权声明:本文为博主原创文章,未经博主允许不得转载。 转载请标明原址:https://blog.csdn.net/kai_zone/article/details/82021233 前言: 这篇文章主要是对linux驱动面试题一个整理跟总结,参考了很多网上的资料,基本涵盖linux驱动相关面试内容。我把他们大概的分为三部分:基...转载 2018-08-28 18:33:13 · 5948 阅读 · 0 评论 -
交叉编译OpenSSL和paho.mqtt.c
交叉编译OpenSSL和paho.mqtt.c交叉编译OpenSSL下载源码官网下载最OpenSSL V1.1.0交叉编译tar zxvf openssl-1.1.0g.tar.gzcd openssl-1.1.0g/./config no-asm shared --prefix=$PWD/install --cross-compile-prefix=arm-no...转载 2018-08-24 14:18:36 · 4610 阅读 · 1 评论 -
交叉编译问题: impossible constraint in 'asm
在进行交叉编译MQTT的时候 出现了一些问题参考了http://zhangjunxin520.blog.163.com/blog/static/30503703201227103553401/ 报错了 发现了cc1: warning: include location "/usr/include" is unsafe for cross-compilation [-Wpoiso...原创 2018-08-24 11:54:31 · 16056 阅读 · 0 评论 -
Linux下GDB调试C/C++
首先先编译程序并生成调试符号:gcc -g -c main.cppgcc -o exefile main.o以上的exefile为可执行程序的文件名然后:gdb exefile可以开始gdb调试了。然后在(gdb)那里写入l命令,列出程序源码清单,再次回车是往下列出。 (gdb)break linenum 是在代码行号处下断点。然后(gdb) r 是运行调试...转载 2018-08-22 10:29:51 · 168 阅读 · 0 评论 -
error while loading shared libraries: libmpc.so.3: cannot open shared object file: No such fileor di
安装交叉编译工具链的时候,发现有 libmpc.so.3 这个库 但是没找到就可以在环境变量中添加 libmpc.so.3 这个库的路径有时候是有这个库,但不是这个名字需要ln -s 连接一下。如果没有的话就需要安装一下这个库 export LD_LIBRARY_PATH=/home/linux/Downloads/AF790/build/usr/lib 添加一下库的路径就可以了...原创 2018-08-16 15:53:20 · 7925 阅读 · 0 评论 -
select、poll、epoll之间的区别总结[整理]
select、poll、epoll之间的区别总结[整理] select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则...转载 2018-07-22 00:31:39 · 107 阅读 · 0 评论 -
Linux获取文件属性stat()、fstat()、lstat()函数实例学习
Linux获取文件属性stat()、fstat()、lstat()函数实例学习 一、我们经常用ls命令查看到的文件信息,其实都可以使用stat函数组提取出来。 二、stat函数组 1、函数int stat(const char *path, struct stat *buf); – 参数*path:文件路径 –...转载 2018-10-10 16:03:01 · 1080 阅读 · 0 评论 -
使用CURL库,发送HTTP的POST的文件传输
最近搞一个linux 下用CURL的库传输文件到服务器#include <stdio.h>#include <curl/curl.h>#include <sys/stat.h>#include <fcntl.h>#include <string.h>int main(void){ char * Curl_add...原创 2018-12-21 11:44:10 · 6334 阅读 · 0 评论 -
HI3518EV200 SDK安装并编译osdr
转载的加一些 自己在安装过程上面没写到的错误。1、开发环境windows10电脑 + 虚拟机14 Pro + Ubuntu18.0.42、拷贝并解压。将 Hi3518E_SDK_V1.0.3.0.tgz拷贝到 Linux 服务器上。 cd ~/sambashare/ cp /mnt/hgfs/winshare/HI3518EV200/Hi3518E_V200R0...转载 2019-05-10 18:02:33 · 1723 阅读 · 0 评论 -
Ubuntu中的解压缩文件的方式
.tar解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)———————————————.gz解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzip FileName.tar.gz解压:tar zxvf FileName.tar.gz压缩...转载 2019-05-10 14:05:38 · 7061 阅读 · 2 评论 -
EAGAIN、EWOULDBLOCK、EINTR与非阻塞 长连接
EAGAIN、EWOULDBLOCK、EINTR与非阻塞 长连接 EWOULDBLOCK用于非阻塞模式,不需要重新读或者写EINTR指操作被中断唤醒,需要重新读/写在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中)。从字面上来看,是提示再试一次。这个错误经常出现在当应用程序进行一些非阻塞(non-blocki...转载 2019-01-03 15:07:41 · 2355 阅读 · 0 评论 -
IO模式设置网络编程常见问题总结—IO模式设置,阻塞与非阻塞的比较,recv参数对性能的影响—O_NONBLOCK(open使用)、IPC_NOWAIT(msgrcv)。。。
非阻塞IO 和阻塞IO: 在网络编程中对于一个网络句柄会遇到阻塞IO 和非阻塞IO 的概念, 这里对于这两种socket 先做一下说明: 基本概念: 阻塞IO:: socket 的阻塞模式意味着必须要做完IO 操作(包括错误)才会 返回。 ...转载 2018-12-26 10:29:15 · 260 阅读 · 0 评论 -
TCP连接探测中的Keepalive和心跳包. 关键字: tcp keepalive, 心跳, 保活
1. TCP保活的必要性1) 很多防火墙等对于空闲socket自动关闭2) 对于非正常断开, 服务器并不能检测到. 为了回收资源, 必须提供一种检测机制. 2. 导致TCP断连的因素如果网络正常, socket也通过close操作来进行优雅的关闭, 那么一切完美. 可是有很多情况, 比如网线故障, 客户端一侧突然断电或者崩溃等等, 这些情况server并不能正常检测到连接的断开...转载 2018-12-25 10:21:51 · 284 阅读 · 0 评论 -
整理一个双向链表list.h
一直觉得Linux内核的双向链表是十分巧妙的设计,它的实现方式与数据结构课程上讲的完全不同。内核list实现依赖于GCC的扩展,在其它平台不一定能正常运行。在内核中,一般是结构体中使用链表成员,而不是像数据结构课那样在链表结构体中使用数据域。C++中将lsit作为模板,能应用于各种类型数据上,但Linux内核无法使用,因而使用其它手段实现,方便扩展。事实上,内核大量结构体都使用了list。网上有很...转载 2019-01-03 17:06:57 · 204 阅读 · 0 评论 -
创建脱离线程 pthread_attr_setdetachstate
关于脱离线程的说明:使用pthread_create()函数创建线程时,函数第二个参数为NULL,则使用线程属性的默认参数,其中非分离属性需要程序退出之前运行pthread_join把各个线程归并到一起。如果想让线程向创建它的线程返回数据,就必须这样做。但是如果既不需要第二个线程向主线程返回信息,也不需要主线程等待它,可以设置分离属性,创建“脱离线程”。 在任何一个时间点上...转载 2018-12-17 16:05:09 · 289 阅读 · 0 评论 -
Linux下的tar压缩解压缩命令详解
tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:显示所有过程-O:将文件解开到标准输出下面的参数-f是必...转载 2018-12-11 10:04:02 · 1925 阅读 · 0 评论 -
linux c函数获取系统IP地址
一,通过分析/etc/hosts文件里映射关系获取ip地址。#include <stdio.h>#include <netdb.h>int main(){ struct hostent *he; char hostname[20] = {0}; gethostname(hostname,sizeof(hostname...转载 2018-12-21 11:58:46 · 1416 阅读 · 1 评论 -
关于同步、异步与阻塞、非阻塞的理解
1、前言 前一段时间出去面试,被问到同步、异步与阻塞、非阻塞的区别。我一时半会没有想出来,作为一个工作三年的人来说,实在很惭愧。我当时理解同步、异步属于两个进程中间的协作关系,例如使用浏览器访问一个网站,需要多次请求服务端,才能加载完整个页面的内容。同步的操作如下:浏览器首先发送第一个请求,等待服务器回复后,再发送第二个请求,依次类推,直到所有请求完成。异步的操作如下:浏览器发送第一个请求,...转载 2018-07-22 00:11:41 · 125 阅读 · 0 评论 -
linux内核模块相关命令:lsmod,depmod,modprobe,modinfo,insmod,rmmod 使用说明
加载内核驱动的通常流程:1.先将.ko文件拷贝到/lib/module/`uname -r`(内核版本号)/kernel/driver/...目录下, 根据具体用途的区别分为net、ide、scsi、usb、video、parport、md、block、ata等等。2.运行depmod -a,更新模块依赖新,主要是更新modules.dep文件3.运行modprobe加载内核...转载 2018-07-25 11:10:29 · 1079 阅读 · 0 评论 -
linux下如何用c语言调用shell命令
C程序调用shell脚本共有三种法子 :system()、popen()、exec系列数call_exec1.c ,system() 不用你自己去产生进程,它已经封装了,直接加入自己的命令exec 需要你自己 fork 进程,然后exec 自己的命令popen() 也可以实现执行你的命令,比system 开销小方法一、system()的使用,我直接上代码吧 int system(const cha...转载 2018-07-04 11:46:21 · 303 阅读 · 0 评论 -
Linux下的串口编程实例
亲测可用,移植时根据需求修改即可,转载自:http://blog.csdn.net/w282529350/article/details/7378388//串口相关的头文件 #include<stdio.h> /*标准输入输出定义*/ #include<stdlib.h> /*标准函数库定义*/ #include<unistd.h>...转载 2018-07-04 11:45:36 · 180 阅读 · 0 评论 -
Linux下串口通信详解(下)读写串口及关闭串口
上一篇博客是串口的打开及配置,博客链接http://blog.csdn.net/specialshoot/article/details/50707965这一篇我将要把读写串口及串口关闭的操作详细介绍一下。读串口读串口就是接收串口数据,通过read来实现。read函数原型:#include <unistd.h> ssize_t read(int fd, void *buf, si...转载 2018-07-03 10:08:55 · 12577 阅读 · 0 评论 -
Linux下串口通信详解(上)打开串口和串口初始化详解
linux下串口通信主要有下面几个步骤串口通信流程图下面我会一一介绍这几个步骤。1.打开串口代码(串口为ttyUSB0)//打开串口int open_port(void){ int fd; fd=open("/dev/ttyUSB0",O_RDWR | O_NOCTTY | O_NONBLOCK);//O_NONBLOCK设置为非阻塞模式,在read时不会阻塞住,在读的时候将read放在whi...转载 2018-07-03 10:04:32 · 3240 阅读 · 0 评论 -
s3c2440移植MQTT
因为项目需要从机接收MQTT广播,网上有关2440的MQTT移植文章非常少,懵逼死我了,所以移植成功以后先把它写出来,给有需要的人看。我当时是参考了下面几篇文章,但是都不能顺利完成,几篇文章写得很好,需要相互借鉴。http://blog.sina.com.cn/s/blog_951adad70101tnyg.html http://zhuzhouhong8.blog.163.com/blog/...转载 2018-07-03 10:01:59 · 250 阅读 · 1 评论 -
gcc 和 arm-linux-gcc 编译器的默认搜索头文件路径
在LINUX程序设计当中,经常会遇到头文件包含的问题,那么这些头文件到底在哪个路径下?具体的头文件路径依赖于程序性质(应用程序还是和内核相关的程序)和编译器,下面分别叙述。机器环境如下:UBUNTU10.04LTS,自己另外安装的LINUX内核源码目录为/usr/src/kernel,交叉链接器arm-linux-gcc安装目录为/usr/lcoal/arm/2.95.3/【1.如果是应用程序,并...转载 2018-07-03 10:00:44 · 1235 阅读 · 0 评论 -
程序同步与异步的区别
同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。 --------------------------------------------------------------- 举个不太恰当的例子,就像: SendMessage(...) TRACE0("just like ...转载 2018-07-03 09:56:11 · 5528 阅读 · 0 评论 -
/usr/bin/ld: cannot find -l**** 问题的解决办法
在ubuntu上安装软件时,经常出现这样的问题:/usr/bin/ld: cannot find -l****例如: /usr/bin/ld: cannot find -lgfortran 安装torch时出现 /usr/bin/ld: cannot find -lstdc++ 安装cuda时出现 ……这些问题都是因为找不到相应的lib文件,以上面的例子来说就是在系统中找不到libgfortran...转载 2018-07-03 09:46:55 · 47807 阅读 · 2 评论 -
Linux下如何让自己的程序在开机时自动启动
系统的服务在开机时一般都可以自动启动,那我们程序自己写的程序呢? windows系统在“开始”——〉“所有程序”——〉“启动”里面放个快捷方式就行,那Linux下呢? 这也是一个比较简单的问题,有不少的方法可以解决,这里介绍三种方法。因为是简单介绍,所以具体细节不是很详细,可以通过man看看相关手册。 一、/etc/rc.local这是一个最简单的方法,编辑“/etc/rc.local”,把启动程...转载 2018-07-03 09:42:48 · 288 阅读 · 0 评论 -
linux多线程全面解析
引入: 在传统的Unix模型中,当一个进程需要由另一个实体执行某件事时,该进程派生(fork)一个子进程,让子进程去进行处理。Unix下的大多数网络服务器程序都是这么编写的,即父进程接受连接,派生子进程,子进程处理与客户的交互。虽然这种模型很多年来使用得很好,但是fork时有一些问题:fork是昂贵的。内存映像要从父进程拷贝到子进程,所有描述字要在子进程中复制等等。目前有的Unix实现使用一...转载 2018-07-04 11:46:33 · 85 阅读 · 0 评论 -
创建队列 出队 入队 显示队列(链式)
#include <stdlib.h> typedef int datatype; /* 定义节点存储入队元素和指向下一节点的指针 */typedef struct node{ datatype data; struct node *next;}NODE; /* 定义节点存放队尾和对首指针 */typedef struct poiner{ NODE *front...转载 2018-07-04 11:46:06 · 932 阅读 · 1 评论 -
Linux下配置文件读取操作流程及其C代码实现
一、概述 Linux具有免费、可靠、安全、稳定、多平台等特点,因此深受广大程序员的欢迎。 为了体现软件产品的灵活性,可添加配置文件存放某些重要的参数,在部署的时候根据实际的安装环境对每个配置项的值进行设置。这就要求程序能够准确读取到各个配置项的值。 本文详细介绍了Linux下配置文件的读取方法及读取操作的C代码实现,为相关的软件开发工作的开展提供了有益的参考。二、配置文件介绍 为了便于...转载 2018-07-24 10:58:26 · 4163 阅读 · 0 评论 -
进程和线程的区别
操作系统面试题1、进程和线程的区别?解析:(1)进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元 (2)同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进行至少包括一个线程。 (3)进程的创建调用fork或者vfork,而线程的创建调用pthread_create,进程结束后它拥有的所有线程都将销毁,而线程...转载 2018-07-12 18:57:13 · 175 阅读 · 0 评论 -
adb操作命令详解及大全
说到 ADB 大家应该都不陌生,即 Android Debug Bridge,Android调试桥,身为 Android 开发的我们,熟练使用 ADB 命令将会大大提升我们的开发效率, ADB 的命令有很多,今天就来总结下我在开发常用到的一些 ADB 命令。查看版本ADB 的安装这里就不多说了,输入以下命令有如下提示就证明你环境ok,否则自行网上搜索解决下。$ adb versionAndroid...转载 2018-07-05 10:46:55 · 152 阅读 · 0 评论 -
Makefile简易教程
本文部分内容引用:中文维基百科。一个简单的Makefile教程。Makefile简介在软件开发中,make通常被视为一种软件构建工具。该工具主要经由读取一种名为“makefile”或“Makefile”的文件来实现软件的自动化建构。它会通过一种被称之为“target”概念来检查相关文件之间的依赖关系,这种依赖关系的检查系统非常简单,主要通过对比文件的修改时间来实现。在大多数情况下,我们主要用它来编...转载 2018-07-05 10:45:53 · 151 阅读 · 0 评论 -
一个不错的shell 脚本教程
一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂!建立一个脚本 Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在 bash的大姐,bourne shell中运行)。 如同其他语言一样...转载 2018-07-04 16:11:00 · 155 阅读 · 0 评论 -
Linux下开机自启动自定义shell脚本
一、Ubuntu下1、方法一,编辑rc.loacl脚本 Ubuntu开机之后会执行/etc/rc.local文件中的脚本,所以我们可以直接在/etc/rc.local中添加启动脚本。【进入到/etc/rc5.d下,发现S99rc.local,即开机软链接启动顺序99,在方法二设置开启的之后】当然要添加到语句:exit 0 前面才行。如:sudo vi /etc/rc.local/home/neo/...转载 2018-07-04 16:09:24 · 3652 阅读 · 0 评论