嵌入式linux
wojiushiwoba
这个作者很懒,什么都没留下…
展开
-
CentOS7.2 安装GitLab服务器
01. yum install -y curl policycoreutils-python openssh-server02. systemctl enable sshd03. systemctl start sshd04. wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-13.4.2-ce.0.el7.x86_64.rpm05. rpm -i gitlab-ce-13.4.2-ce.0.el7.x86_6原创 2020-10-20 16:48:07 · 190 阅读 · 0 评论 -
ubuntu 16.04 64bits 交叉编译openssl到arm-linux
操作系统为ubuntu16.04 64位版本, openssl为1.1.0d版本。执行如下命令:CROSS_COMPILE=arm-linux- /usr/bin/perl ./Configure no-asm shared linux-armv4 --prefix=/opt/arm-cross-tools/openssl/make && make install注意:原创 2017-12-05 16:16:52 · 2078 阅读 · 0 评论 -
关于linux下C++开发的几个注意事项
今年在ubuntu下用C++编程语言,基于POCO开源库做了个项目,开发调试过程中碰到了不少坑,这里记录一下。如下是几个注意事项: 1. 在包含头文件时,需要注意头文件的顺序,应该从上到下依次是:系统调用的头文件,第三方库的头文件,自定义的头文件; 注意:如不按此顺序,在程序语法都正常的情况,程序编译没问题,但是运行时就会出现,段出错,内存分配或访问错误原创 2017-12-21 08:15:30 · 566 阅读 · 0 评论 -
ubuntu下codeblocks单步调试突然变的很慢
运行环境:ubuntu16.04 x64版本,codeblocks 16.01,gcc为ubuntu下最新版本 最近在用codeblocks调试程序时,发现codeblocks的单行或单指令调试时,程序需要运行好一会才能执行到下一行或下一条指令,问百度问了无果,只能自己研究一下了。 由于调试的程序无法正常执行,所有想使用调试功能看一下怎么回事,程序执行到某行的时原创 2017-09-06 17:08:04 · 1539 阅读 · 5 评论 -
linux下查看进程使用文件描述符的详细信息
由于近期在项目中遇到socket通信,和服务器端建立了TCP连接,但是要向服务器发送的数据却没发上去,分析没发出去的原因可能是:应用程序进程把文件描述符0关闭了,然后socket获取到了0作为socket通信的文件描述符,然后建立TCP成功,但是由于0是系统的标准输入文件描述符,导致发送数据异常。 上述的原因只是推测,并没有确切的证据,正好今天早上发现现场的设备出现不上去报文的情况原创 2017-08-07 09:46:50 · 9754 阅读 · 0 评论 -
linux下查看到某个IP的寻址路由信息
当网络故障时或在分析某些问题时,需要查看linux设备到某个IP的路由信息。使用traceroute命令即可查看。具体命令如下:traceroute xxx.xxx.xxx.xxx原创 2017-08-07 09:08:51 · 12247 阅读 · 0 评论 -
ubuntu10.10使用GDB构建ARMlinux在线调试环境
嵌入式Linux的GDB在线调试环境由Host端(PC机)和Target端(ARM实验板)两部分组成,Host端使用arm-Linux-gdb调试工具,而Target端需要运行gdbserver,两者之间可通过串口或网口连接,把ARM应用程序在Target端的执行情况返回Host。调试跟踪命令从Host端中的arm-Linux-gdb中发出。 首先介绍一下我的使用环境:操作系统为原创 2016-10-17 16:46:22 · 633 阅读 · 0 评论 -
linux下查看系统内存使用情况的几个命令
最近在客户现场运行的arm linux设备出现了死机情况,由于接触linux嵌入式设备时间不长,遇到该问题后觉得束手无措。后领导提示说查看其他没有死机设备的系统资源使用情况,下面介绍下我用到的那些命令: 1. top top命令可实时查看系统的内存使用情况,有多少物理内存已经使用了,多少物理内存空闲,多少缓存,CPU的使用情况,每个进程的进程号是多少,占用的虚拟内存原创 2017-06-27 16:08:03 · 19886 阅读 · 0 评论 -
linux下导致内存使用量增长的shell命令及手动释放内存的方法
最近在客户现场发现arm linux嵌入式设备在运行一段时间后,设备物理内存使用量接近100%,分析发现和脚本程序中长时间循环使用几个shell命令有关。 1. cp 复制命令,使用cp命令,会使得linux的物理内存使用量和缓存使用量增加,可在top命令中查看内存使用情况。 2. mv 移动或重命名文件命令,和cp类似,使用mv命原创 2017-06-27 16:23:44 · 5387 阅读 · 0 评论 -
linux下获取记录文件的前N行或后N行
这几天在做ARM linux嵌入式设备的应用程序,要记录设备的启动记录,但是又怕长时间运行,记录文件太大,导致写爆存储,故想之保留记录文件的最后N行来保证存储不会被写爆。 故开始问度娘要解决方案,网上提供了head和tail两个命令。 1. head命令 head命令用于显示文件文字区块,可以显示文件的前N行,例如:head -10 test.txt原创 2017-06-29 10:41:02 · 11556 阅读 · 0 评论 -
ARM开发板挂载Ubuntu主机的NFS共享文件夹
ubuntu主机环境 ubuntu16.04 x64 IP 192.168.1.225,arm开发板 ARM9,linux 2.6.37,busybox文件系统,IP 192.168.1.222.1. 在ubuntu下安装NFS服务apt-get install nfs-common nfs-kernel-server2. 创建共享目录mkdir /nfs 此处目录可原创 2017-04-27 18:16:49 · 3025 阅读 · 0 评论 -
ubuntu16.04源码编译安装Poco1.7.8
环境:ubuntu16.04 x64, GCC 5.4.0 20160609首先,做编译前准备,编译安装OPENSSL等包,为编译Poco准备依赖包。1. OPENSSL的编译安装(以1.0.0e为准) 源码下载地址:https://www.openssl.org/source/openssl-1.0.0e.tar.gz 下载后按如下指令进行编译安装:原创 2017-04-11 10:15:15 · 1408 阅读 · 0 评论 -
gcc搜索目录信息查看
环境:ubuntu16.04 64bits gcc 5.4.01. 查看gcc可执行文件,库文件的搜索gcc -print-search-dirs命令执行情况如下:# gcc -print-search-dirs install: /usr/lib/gcc/x86_64-linux-gnu/5/programs: =/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/l原创 2018-01-19 16:40:45 · 1551 阅读 · 0 评论 -
Linux操作系统添加自定义应用程序开机启动
环境:debian8.11.1 64位方法1:应用程序:自己编写的C程序在/etc/init.d目录下增加启动脚本。此处以servmon文件为例,文件内容如下:#!/bin/sh### BEGIN INIT INFO# Provides: servermon# Required-Start: $local_fs $remote_fs $network $sysl...原创 2019-03-13 10:50:21 · 1452 阅读 · 0 评论 -
Debian安装图形界面
环境:Debian9.6 64位0. 确保Debian能够联网1.apt install x-window-system-core gnome-core #安装最基本的gnome图形相关软件2. init 6 #设置系统为图形界面启动,该命令执行后系统会重启3. 设置系统可以root登录 1)修改/etc/gdm3/daemon.conf文件,在[security...原创 2019-03-07 09:47:30 · 31803 阅读 · 2 评论 -
Debian安装telnet服务
环境:Debian9.6 64位版本1. apt install xinetd telnetd telnet #安装xinet服务,telnet服务,telnet客户端2. 创建文件/etc/xinetd.d/telnet,文件内容如下:service telnet{ disable = no flags = REUSE socket...原创 2019-03-06 14:43:23 · 11702 阅读 · 0 评论 -
Vbox6.04 Debian虚拟机安装增强工具
环境:VBox6.04 Debian9.6 64位在创建Vbox虚拟机后安装好Debian系统。开始操作前请确保虚拟机可以上网1. root用户登录Debian;2. uname -r #查看debian内核版本3. apt install linux-headers-第2步的版本号 #安装内核头文件4. apt install build-essential ...原创 2019-03-06 14:29:23 · 1262 阅读 · 0 评论 -
WINDOWS10编译openssl
操作系统:windows10 64位编译环境:VS20171. 安装perl,在官网下载安装包后安装http://www.activestate.com/activeperl/downloads2. 下载openssl源代码,在官网根据自己情况下载openssl源代码(我下载的为1.0.2r)https://www.openssl.org/source/3. 解压源代码,这...原创 2019-03-08 15:19:46 · 742 阅读 · 0 评论 -
Linux下获取CPUID、硬盘序列号
在很多系统软件的开发中,需要使用一些系统的唯一性信息。所以,得到主机的CPUID、硬盘序列号及网卡的MAC地址,就成个一件很重要的应用。需要的准备知识有:1. GCC的嵌入汇编,具体的GCC嵌入汇编知识,请参考相关手册2.ioctl系统调用,具体的调用方法,请查看手册页获取CPUID按照网上提供的说明,CPUID并不是所有的Intel CPU都支持的。如果支持,汇编调用为:ea...转载 2018-09-14 17:03:19 · 15695 阅读 · 2 评论 -
linux系统编程之错误处理:perror,strerror和errno
1,系统变量errno在linux系统编程中错误通常通过函数返回值来表示,并通过特殊变量errno来描述。errno这个全局变量在<errno.h>头文件中声明如下:extern int errno;errno是一个由POSIX和ISO C标准定义的符号,看(用)起来就好像是一个整形变量。当系统调用或库函数发生错误的时候,比如以只读方式打开一个不存在的文件时,它的值将会被改...转载 2018-09-08 09:51:40 · 185 阅读 · 0 评论 -
TCP系统参数设置
我们这里应用的是CentOS5.3,并内核使用的是2.6.18-128.el5PAE #1 SMP 。修改部分TCP ,有的是为了提高性能与负载,但是存在降低稳定性的风险。有的则是安全方面的配置,则有可能牺牲了性能。1.TCP keepalive TCP连接保鲜设置echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_timeecho 15 &...转载 2018-09-04 08:23:27 · 703 阅读 · 0 评论 -
openssl中OID标识的增加
背景:由于最近在国家密码管理局的GM/T系列标准,需要在openssl中基于PKCS7的格式实现GM/T0010标准的数字信封数据格式,需要在openssl中增加GM/T0010标准的各个消息的OID标识符。方法1:1. 把OID标识符转换为ASN1编码 使用openssl中的asn1parse命令进行OID标识符转换为ASN1编码,命令示例如下: openssl asn1parse ...原创 2018-03-08 11:22:20 · 4225 阅读 · 0 评论 -
RHEL7 的注册
安装RHEL7后,在没有注册的时候,YUM软件仓库是不能使用的,需要注册后才可以使用,但是RHEL是商用版系统,需要购买授权。在网上查找后,发现RHEL有个开发者订阅,我们可以免费注册为RHEL开发者后,使用RHEL开发者的账户密码注册系统,注册后即可获得RHEL免费的授权,并可以使用YUM和RPM软件仓库进行安装各种软件。下面详细介绍一下RHEL Developers的注册,以及系统的注册。原创 2016-09-12 20:37:19 · 17484 阅读 · 10 评论 -
Oracle VM VirtualBox下ubuntu虚拟机存储空间不够解决方案
工作环境为Oracle VM VirtualBox下安装的Ubuntu虚拟机,原有虚拟机的虚拟机硬盘为20G,在安装新的软件时提示没有足够的剩余空间安装软件。由于接触linux操作系统时间较短,只能问度娘如何解决,现根据度娘提供的可以实施下去的方案说一下过程。大致思路为虚拟机添加另外一块虚拟硬盘,并把/home目录下的文件移动到新的虚拟硬盘中,再把新加的虚拟硬盘挂载到/home下,这样系统原创 2016-09-29 14:31:52 · 11146 阅读 · 2 评论 -
codeblocks调试功能异常问题
最近在使用codeblocks过程中,在线调试遇到些不能调试的问题,现在此处记录一下,主要有如下几种情况:1. 工程目录不能有中文和空格,更换工程到没有中文和空格的目录(例如:某个盘符的根目录)即可;2. 调试模式时,编译选项需要带-g,如果没有增加即可调试;3. 工程中需要打开一个c或cpp文件,并在设置断点,否则程序会像正常运行一下,直接结束了;4. 打开的代码需要全部展开,不原创 2017-04-26 16:55:05 · 2080 阅读 · 1 评论 -
linux下常见错误及解决方法
1. apt-get Could not get lock /var/lib/dpkg/lockE: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)E: Unable to lock the administration directory (/var/lib/dpkg原创 2016-09-29 14:39:53 · 465 阅读 · 0 评论 -
linux下显式加载调用动态库
由于进程在启动时,只需使用很多动态库中的一个,为了节约运行内存,使用显式方式加载动态库。动态库显式调用和隐式调用这里就不在详细说了。下面是显式加载调用动态库的过程。代码部分分为: test_so1.cpp , test_so1.h,test_dl.cpp, test_so2.cpp,test_so1.h其中test_so1.cpp为动态库1源代码, test_so1.h为动态库1的原创 2016-11-04 15:36:35 · 1028 阅读 · 0 评论 -
编译使用了C++11特性的代码
环境ubuntu 16.04,g++ 5.4.0,编译带有C++11特性的代码时,需在命令中增加-std=c++11。例如:g++ -o forloop forloop.cpp -std=c++11原创 2016-11-03 14:07:05 · 656 阅读 · 0 评论 -
Ubuntu10.10源码编译安装OPENSSL
由于工作需要,需要使用OPENSSL进行加密通信,需在开发环境下安装OPENSSL,进行技术储备,以备后续使用。从OPENSSL官网下载最新的OPENSSL源码包后,进行解压,进入OPENSSL目录后。开始安装。依次使用以下命令:1. ./config --prefix=/usr/local/openssl shared原创 2016-10-09 07:41:08 · 904 阅读 · 0 评论 -
VirtualBox上网和主机远程访问的配置
由于工作指定使用开源的VirtualBox虚拟机,在刚接触到VirtualBox时,使用领导提供的虚拟机,发现内部虚拟机可以上网的时候,外部注意不能通过远程命令行的方式访问虚拟机,可以远程访问虚拟机的时候又不能上网,这点很是让人郁闷,经研究发现,实际上可以解决该问题的,下面就详细介绍下我解决该问题的方法。我使用双网卡的方法解决该问题,在虚拟机关闭的情况下,设置虚拟机,网卡1设置为网络地址转换(原创 2016-09-12 21:13:00 · 905 阅读 · 0 评论 -
mini2440 文件系统无法烧写问题
拿到mini2440后,根据手册说明向nand flash里边烧写linux相关文件,每次烧写到文件系统时总是出错。上网问度娘。(我的系统环境为:ubuntu 14.04.02) 1. 很多人说应该是nand flash坏掉了,我就在网上购买了对应型号的nand flash,收到之后,迫不及待的找人换上了一片,再次烧写,发现仍然是文件系统烧写到半截报错。 2. 烧写原创 2016-07-15 12:40:38 · 534 阅读 · 0 评论 -
嵌入式linux与ARM开发板的入门建议
FROM:http://baike.baidu.com/view/2874416.htm 第一,学习基本的裸机编程。 对于学硬件的人而言,必须先对硬件的基本使用方法有感性的认识,更必须深刻认识该硬件的控制方式,如果一开始就学linux系统、学移植那么只会马上就陷入一个很深的漩涡。我在刚刚开始学ARM的时候是选择ARM7(主意是当时ARM9还很贵),学ARM7的时候还是保持着学51单片机转载 2016-06-30 10:00:37 · 592 阅读 · 0 评论 -
构建Linux软件环境
通常情况下,嵌入式linux的初学者都习惯在使用windows操作系统,不熟悉Linux操作系统。故此处选择通过在windows下安装虚拟机的方式来构建linux软件环境。 下面说明一下安装linux的过程: 1. 安装VMware虚拟机软件。从VMware的官方网站https://www.vmware.com/下载VMware软件,此处我下载的是VMWare worksta原创 2016-07-01 08:47:01 · 470 阅读 · 0 评论 -
ubuntu虚拟机网络及其他硬件设置
安装好ubuntu后,迫不及待的打开虚拟机,想上网。结果无法连接网络,查看网络为桥接方式,也获取到了IP地址。 由于我的系统安装在公司机器上,网络属于企业网络,有硬件防火墙,应该是设置了只识别windows系统,或者是有别的限制,总之不能上网。 后在往上查阅,了解到,虚拟机的网络连接方式共用4中,桥接模式:直接连接物理网络,NAT模式:用共享主机的IP地址,仅主原创 2016-07-01 09:32:55 · 1024 阅读 · 0 评论 -
NAND Flash的坏块
From:http://blog.sina.com.cn/s/blog_6ba6e53b01013e32.html产生坏块的原因是因为NAND Flash的工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,所以,在NAND的生产中及使用过程中会产生坏块。一、坏块的具体表现:当编程/擦除这个块时,不能将某些位拉高,这会造成Page Program和Block E转载 2016-07-11 15:43:36 · 1690 阅读 · 0 评论 -
ubuntu10.10不能更新问题
由于Ubuntu10.10官方维护已停止,导致系统的软件都无法更新了。先找到一种方法,手动更换apt-get的源列表配置,修改/etc/apt/sources.list文件内容为如下内容即可正常更新。## Major bug fix updates produced after the final release of the## distribution.deb http:/原创 2016-09-29 14:53:54 · 515 阅读 · 0 评论 -
Ubuntu 10.10 软件更新问题 (-5 - No address associated with hostname)
前一天刚刚修改了更新源,系统能够更新数据了。今天早上来更新就一直报错,报错为(-5 - No address associated with hostname)。问度娘无果后,只能google了,很多人说是源的问题,我昨天刚解决了源的问题,基本可以排除源的问题,有人说是网络的问题,让直接在浏览器中试验一下是否可以连接上,我在windows中的浏览器上试验,能够正常访问。问题在此僵住了。后突原创 2016-09-30 08:46:03 · 2916 阅读 · 0 评论 -
libusb移植到ARM linux
环境:ubuntu16.04 x64版本, arm-linux-gcc (Sourcery G++ Lite 2010.09-50) 4.5.11. 下载源码 https://sourceforge.net/projects/libusb/2. 解压源码 tar -xvf libusb-1.0.20.tar.bz23. 进入解压后的文件目录,编译器配置 ./configur原创 2017-05-16 13:48:13 · 1806 阅读 · 0 评论 -
ARM-linux下的代码覆盖率报告生成
最近做arm-linux 下的项目,需要生成代码单元测试。百度查到的基本都是x86架构下的生成方式,使用gcc的-g -Wall --coverage选项,并使用lcov,genhtml配合生成html格式的代码测试覆盖率报告,但是我在把代码用交叉编译工具编译后,放到ARM-linux下运行后,出现一些问题。下面简单介绍一下。 1. 我在把可执行文件下载到ARM-linux上执行程原创 2017-03-28 09:58:10 · 932 阅读 · 0 评论 -
ubuntu16.04交叉编译Poco1.7.8 for arm
环境:ubuntu16.04 x64, arm-linux-gcc (Sourcery G++ Lite 2010.09-50) 4.5.1首先,做编译前准备,编译安装OPENSSL,STLport等包,为编译Poco准备依赖包(由于我不使用MySQL和ODBC,所以没有交叉编译安装,需要的可以自行交叉编译安装)。1. OPENSSL的交叉编译安装(以1.0.0e为准)源码下原创 2017-04-11 10:36:21 · 2592 阅读 · 0 评论