Linux基础
文章平均质量分 84
xiaojun11-
勤能补拙,奋发ing
展开
-
C++ 字节对齐的总结(原因和作用)
一、介绍什么是字节对齐 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。字节对齐的原因和作用 各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节转载 2021-09-13 09:12:18 · 359 阅读 · 0 评论 -
Linux core文件的生成、大小、路径查看和设置
1.设置core文件大小1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。2)使用ulimit -c filesize命令,可以限制core文件的大小(filesize的单位为kbyte)。若ulimit -c unlimited,则表示core文件的大小不受限制。如果生成的信息超过此大小,将会被裁剪,最终生成一个不完整的core文件。在调试此core文 件的时候,gdb会提示错误。可以将ulimit -c unlimited写入到.ba转载 2021-09-03 11:11:16 · 6290 阅读 · 0 评论 -
深析静态链接库和动态链接库相同函数覆盖及库调用顺序问题*************
注意:编译器为gcc,若使用g++,请在库里面加上extern “C” 两个静态库 首先测试静态链接库,大概的代码如下: liba.c#include<stdio.h>#include<stdlib.h>#include"libA.h"void libA(){common();}void common(){printf("libA common!\n");} liba.h#i...转载 2021-05-12 16:07:11 · 747 阅读 · 0 评论 -
CentOS7 一个网卡配置多个IP地址
CentOS7 一个网卡配置多个IP地址1、给网卡p8p1新创建配置文件(复制原来的p8p1,修改IP地址即可)ifcfg-p8p1:0vim /etc/sysconfig/network-scripts/ifcfg-p8p1:0DEVICE="ifcfg-p8p1:0"BOOTPROTO="static"IPADDR=10.0.2.9NETMASK=255.255.255.0GATEWAY=10.0.2.1ONBOOT="yes"2、启动网卡ifup p8p1:0.转载 2020-08-19 16:08:09 · 2134 阅读 · 0 评论 -
linux自动同步北京时间
date 查看当前时间时间不对,可以通过该方法实现which ntpdateyum install ntpdateecho "ntpdate 1.cn.pool.ntp.org" >> /etc/profilesource /etc/profile原创 2020-02-11 11:19:30 · 958 阅读 · 0 评论 -
在Makefile中进行宏定义-D
在源代码里面如果这样是定义的:#ifdefMACRONAME//可选代码#endif那在makefile里面gcc-DMACRONAME=MACRODEF或者gcc-DMACRONAME这样就定义了预处理宏,编译的时候可选代码就会被编译进去了。对于GCC编译器,有如下选项:-D macro=string,等价于在头文件中定...转载 2019-11-27 10:01:29 · 1130 阅读 · 0 评论 -
Linux编程之PING的实现
PING(Packet InterNet Groper)中文名为因特网包探索器,是用来查看网络上另一个主机系统的网络连接是否正常的一个工具。ping命令的工作原理是:向网络上的另一个主机系统发送ICMP报文,如果指定系统得到了报文,它将把回复报文传回给发送者,这有点象潜水艇声纳系统中使用的发声装置。所以,我们想知道我这台主机能不能和另一台进行通信,我们首先需要确认的是我们两台主机间的网络是不...转载 2019-11-21 17:15:10 · 467 阅读 · 0 评论 -
linux c 字符编码转换函数 iconv
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/jiayanhui2877/article/details/11965431一、利用iconv函数族进行编码转换在LINUX上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现,只不过后者是针对文件的,...转载 2019-11-15 18:21:50 · 466 阅读 · 0 评论 -
systemctl 针对 service 类型的配置文件
以前,我们如果想要创建系统服务,就得要到 /etc/init.d/ 下面去创建相对应的 bash shell script 来处理。那么现在 systemd 的环境下面, 如果我们想要设置相关的服务启动环境,那应该如何处理呢?这就是本小节的任务啰!17.3.1 systemctl 配置文件相关目录简介现在我们知道服务的管理是通过 systemd,而 systemd 的配置文件大部分转载 2017-06-27 18:21:25 · 22149 阅读 · 2 评论 -
CentOS 6.5升级Python版本、修复yum和安装模块
CentOS python版本是V2.6.6,升级3.4.3。下载 安装包 wget http://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz解压安装包 tar -zxvf Python-3.3.0.tgz 进入解压后目录 cd Python-3.3.0 编译安装 ./configure转载 2017-03-17 19:45:47 · 2655 阅读 · 0 评论 -
远程登陆不了ubuntu上的mysql的解决办法
1.Ubuntu上安装MySQL非常简单只需要几条命令就可以完成。 参考网页:http://www.linuxidc.com/Linux/2016-07/133128.htm1). sudo apt-get install mysql-server2). apt-get isntall mysql-client3). sudo apt-get install libmysq原创 2017-11-10 14:31:59 · 282 阅读 · 0 评论 -
链接库的时候,提示load shared libraries error,xxx file too short
该问题主要是提示:软连接链接问题,原因:程序链接的动态库中有软连接,但是软连接没有( l )标识,软连接文件太小,所以就成了too short,重新删除文件,创建软链接此时ldd xxx,也会报这个错误例子:There was probably an error copying/extracting the libraries. libvtkWidgets.so转载 2017-01-23 13:41:44 · 14714 阅读 · 1 评论 -
Linux-Centos include/lib/bin等搜索路径的配置
很多时候,我们的.h/.so/.a/bin文件都不在Linux发行版所指定的默认路径下,这时可以通过~/.bashrc来增加搜索路径。[plain] view plain copy print?#增加.so搜索路径 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/liheyuan/soft/l转载 2017-02-27 19:08:59 · 1677 阅读 · 0 评论 -
10张图带你深入理解Docker容器和镜像
转载:http://blog.csdn.net/x931100537/article/details/49633107http://dockone.io/article/783【编者的话】本文用图文并茂的方式介绍了容器、镜像的区别和Docker每个命令后面的技术细节,能够很好的帮助读者深入理解Docker。这篇文章希望能够帮助读者深入理解Docker的命令,还有容器转载 2017-01-16 09:55:54 · 1611 阅读 · 1 评论 -
理解 pkg-config 工具(linux编译辅助工具)
你在 Unix 或 Linux 下开发过软件吗?写完一个程序,编译运行完全正常,在你本机上工作得好好的,你放到源代码管理系统中。然后,告诉你的同事说,你可以取下来用了。这时,你长长的出了一口气,几天的工作没有白费,多么清新的空气啊,你开始飘飘然了。“Hi,怎么编译不过去?”你还沉浸在那种美妙的感觉之中,双臂充满着力量,似乎没有什么问题能难倒你的。正在此时,那个笨蛋已经冲着你嚷开了。转载 2016-12-23 15:24:35 · 403 阅读 · 0 评论 -
通过execve在两个进程间传递环境变量
进程1:execve 进程2:helloexecve.h 的代码如下:#include #include #include /* #include execve是系统调用,下面的函数是execve的库函数 extern char **environ; int execl(const char *path, const转载 2016-12-14 13:21:06 · 2520 阅读 · 0 评论 -
Centos下Valgrind使用与安装
第一步:获取Valgrind 包 可以先使用浏览器访问http://valgrind.org/downloads/查看当前版本wget http://valgrind.org/downloads/valgrind-3.10.1.tar.bz2第二步:将下载的文件解压tar -jxvf valgrind-3.10.1.tar.bz2第三步:安装转载 2016-11-02 17:37:43 · 2990 阅读 · 0 评论 -
tinyxml动态库生成和使用
1、xml默认是生成执行文件,要想生成动态库需要修改makefile从http://ncu.dl.sourceforge.net/sourceforge/tinyxml/tinyxml_2_4_0.tar.gz下载tinyxml,可以根据自己的需要,选择不同的版本。将tinyxml_2_4_0.tar.gz上传到主机,然后解压执行如下命令: tar -xzvf tinyxml_2_转载 2016-10-19 17:28:19 · 4112 阅读 · 0 评论 -
Linux下如何不停止服务,清空nohup.out文件
转自:http://www.sucheasy.com/OracleFusionMiddleware/640.htmltips:最近发现有不少人在百度这个问题,当初如易我也是初学者,随便从网上搜了一下,就转过来了,不过为了避免搜索结果同质化,为大家提供更翔实的参考,我将nohup.out相关知识整理汇总如下:1.nohup.out的由来及作用用途:Linux命转载 2016-11-10 09:38:13 · 1003 阅读 · 0 评论 -
linux错误补捕获
linux下错误的捕获:errno和strerror的使用 林林卡 2011-08-09 13:44:12经常在调用linux 系统api 的时候会出现一些错误,比方说使用open() write() creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的原因。这个时候使用errno这个全局变量就相当有用了。 在程序代码中包含 #i转载 2016-10-20 14:07:20 · 350 阅读 · 0 评论 -
Linux上如何查看某个进程的线程
这里提供了在Linux上显示某个进程的线程的几种方式。方法/步骤问题: 我的程序在其内部创建并执行了多个线程,我怎样才能在该程序创建线程后监控其中单个线程?我想要看到带有它们名称的单个线程详细情况(如,CPU/内存使用率)。线程是现代操作系统上进行并行执行的一个流行的编程方面的抽象概念。当一个程序内有多个线程被叉分出用转载 2016-11-11 15:33:23 · 525 阅读 · 0 评论 -
gdb 查看死锁
死锁:一种情形,此时执行程序中两个或多个线程发生永久堵塞(等待),每个线程都在等待被 其他线程占用并堵塞了的资源。例如,如果线程A锁住了记录1并等待记录2,而线程B锁住了记录2并等待记录1,这样两个线程就发生了死锁现象。gdb调试死锁的方法:gdb attach pidthread apply all bt找到_lll_lo转载 2016-11-16 10:25:19 · 8718 阅读 · 0 评论 -
穷人如何调试死锁的进程
转载自:http://www.cnblogs.com/ralphjzhang/archive/2011/12/03/2274013.html 谢谢版主这里说的穷人当然不是真的穷,而是指很多情况下无法动用太多工具。例如,一个正在生产环境下运行的进程死锁了,或者你只是在跑一个程序,并没有在调试器里面打开它,然后发现没有响应,日志输出也停止了。由于你是一个有经验的程序员,会想到“我刚刚加转载 2016-11-14 11:04:09 · 670 阅读 · 0 评论 -
Linux 上分析死锁的简单方法
转载自:http://www.ibm.com/developerworks/cn/linux/l-cn-deadlock/ 谢谢版主本文主要介绍一种在 Linux 上分析死锁问题的简单方法。主要介绍死锁的基本概念,以及如何使用 pstack 和 gdb 对死锁问题进行分析。简介死锁 (deallocks): 是转载 2016-11-14 11:20:55 · 464 阅读 · 0 评论 -
Linux环境崩溃生成core文件以及调试
Windows环境崩溃问题可根据vs调试工具查看,Linux同样可以查看调用堆栈的信息,只是需要更改Linux设置,使程序崩溃时候产生core文件。然后gdb调试即可。1产生core文件方法产生coredump的条件,首先需要确认当前会话的ulimit –c,若为0,则不会产生对应的coredump,需要进行修改和设置。ulimit -c unlimited (转载 2016-11-02 11:13:29 · 5449 阅读 · 2 评论 -
C 语言中 setjmp 和 longjmp
转载自:http://www.cnblogs.com/hazir/p/c_setjmp_longjmp.html 多谢博主在 C 语言中,我们不能使用 goto 语句来跳转到另一个函数中的某个 label 处;但提供了两个函数——setjmp 和 longjmp来完成这种类型的分支跳转。后面我们会看到这两个函数在处理异常上面的非常有用。setjmp 和 longj转载 2017-11-24 15:43:48 · 252 阅读 · 0 评论 -
GNU Autotools的使用方法
摘抄:http://blog.csdn.net/scucj/article/details/6079052 手工写Makefile是一件很有趣的事情,对于比较大型的项目,如果有工具可以代劳,自然是一件好事。在Linux系统开发环境中,GNU Autotools 无疑就充当了这个重要角色。(在Windows系统的开发环境中,IDE工具,诸如Visual Studio,来管理项目也转载 2017-12-13 17:02:10 · 355 阅读 · 0 评论 -
fcntl设置FD_CLOEXEC标志作用
转载:https://blog.csdn.net/ustc_dylan/article/details/6930189通过fcntl设置FD_CLOEXEC标志有什么用?close on exec, not on-fork, 意为如果对描述符设置了FD_CLOEXEC,使用execl执行的程序里,此描述符被关闭,不能再使用它,但是在使用fork调用的子进程中,此描述符并不关闭,仍可使用。eg:ja...转载 2018-04-03 14:11:27 · 182 阅读 · 0 评论 -
ubuntu安装配置tftp服务器
tftp服务器最简单安装配置1.安装tftp-serversudo apt-get install tftpd-hpasudo apt-get install tftp-hpa(如果不需要客户端可以不安装)tftp-hpa是客户端tftpd-hpa是服务器端2.配置TFTP服务器sudo vim /etc/default/tftpd-hpa将原来的内容改为:TF...转载 2019-08-06 11:03:58 · 159 阅读 · 0 评论 -
Ubuntu 16.04中搭建TFTP服务
1. 安装 $ apt-get install tftp-hpa tftpd-hpa2. 建立目录 $ mkdir /tftpboot # 这是建立tftp传输目录。 $ sudo chmod 0777 /tftpboot $ sudo touch test.txt # test.txt文件最好输入内容以便区分 3. 配置/etc/xinetd.con...转载 2019-08-06 11:01:10 · 257 阅读 · 0 评论 -
union联合体使用详解
转载自:https://www.cnblogs.com/leezhxing/p/4619185.html 谢谢版主1.联合体联合体(union)与结构体(struct)有一些相似之处。但两者有本质上的不同。在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在联合体中,各成员共享一段内存空间, 一个联合变量的长度等于各成员中最长的长度。应该说明的是, 这里所...转载 2019-07-05 10:37:13 · 1048 阅读 · 0 评论 -
g++报错 [Error] invalid use of incomplete type 'class B'
#include "iostream"class B;class A {public:void func(B* para) {para -> B_func();}};class B {public:void B_func() {std::cout << "sml" << std::endl;}};int main() {B* T...转载 2019-07-04 15:22:33 · 2715 阅读 · 1 评论 -
如何识别C++编译以后的函数名
From:https://blog.csdn.net/u013525455/article/details/78180614 ,谢谢版主C/C++语言在编译以后,函数的名字会被编译器修改,改成编译器内部的名字,这个名字会在链接的时候用到。如果用backtrace之类的函数打印堆栈时,显示的就是被编译器修改过的名字,比如说_Z3foov 。 那么这个函数真实的名字是什么呢?每个编译器都有一...转载 2019-05-17 13:37:13 · 1136 阅读 · 0 评论 -
gcc使用---动态库中链接静态库
源文章地址:https://blog.csdn.net/edwardlulinux/article/details/56812636最近自己的项目中遇到一个问题:编译一个动态库,动态库中使用了静态库的函数如下图所述问题来了怎么编译最终得到一个带有静态链接的动态库libxxx.so?生成静态库libxxx1 gcc -o xxx1.o -c xxx1.c ...转载 2019-02-12 11:25:12 · 1838 阅读 · 0 评论 -
CentOS6.5升级gcc到4.8总结
操作系统是CentOS6.8的32位版本,yum自带的gcc版本为4.4.7,不支持C++11特性。所以需要升级到4.8.5,至少要升级到4.8.1才完全支持C++11。本文提供了自动安装脚本和自动测试安装是否成功的脚本。 操作系统是CentOS6.8的32位版本,yum自带的gcc版本为4.4.7,不支持C++11特性。所以需要升级到4.8.5,至少要升级到4.8.1才完全支持C++1...转载 2019-01-15 14:52:31 · 3978 阅读 · 0 评论 -
关于pthread_cond_wait使用while循环判断的理解
转载自: https://www.cnblogs.com/leijiangtao/p/4028338.html在Stevens的《Unix 环境高级编程》中第11章线程关于pthread_cond_wait的介绍中有一个生产者-消费者的例子P311,在进入pthread_cond_wait前使用while进行条件判断,而没有直接使用if,耐人费解!代码如下:#include <...转载 2019-01-11 15:00:07 · 668 阅读 · 0 评论 -
linux C源码下载地址
这个得去gnu官网下载, C标准库(GNU) 对应glibc ,C++库 对应 libstdc++glibc: http://git.savannah.gnu.org/cgit/hurd/glibc.git/libstdc++ : ftp://gcc.gnu.org/pub/gcc/releases/转载 2018-12-20 15:25:37 · 700 阅读 · 0 评论 -
v4l2,是linux内核中的一种视频采集的API
百度百科 : http://baike.baidu.com/view/5494174.htm?fr=aladdin Vv4L2(video 4 linux 2)编辑V4L2有一段历史了。大约在1998的秋天,它的光芒第一次出现在Bill Dirks 的眼中。经过长足的发展,它于2002年11 月,发布2.5.46 时,融入了内核主干之中。然而直到今天,仍有一部分内核驱动不支持新的...转载 2014-09-26 06:57:24 · 1458 阅读 · 0 评论 -
Linux 之centos7 制作服务自启动systemd
摘要: - Centos7开机第一个程序从init完全换成了systemd这种启动方式,同centos 5 6已经是实质差别。systemd是靠管理unit的方式来控制开机服务,开机级别等功能。 在/usr/lib/systemd/system目录下包含了各种unit文件,有service后缀的服务unit,有target后缀的开机级别unit等,这里临时介绍关于service后缀的文件。Ce...转载 2018-11-19 16:53:38 · 715 阅读 · 0 评论 -
gdb 打印抽象数据类型,例如 map vector 等类型
GDB的自定义命令非常有用,通过自定义命令,直接操作容器中的数据,可以方便的查看STL容器中的数据。这个链接dbinit_stl_views是Dan C Marinescu写的查看STL容器的自定义命令(如果不适合你的STL版本的话,可以自行修改)。把它添加到你的.gdbinit中,就可以方便的查看STL容器了。它提供了查看vector,list,map,multimap,set,multis...转载 2018-10-23 23:58:01 · 2863 阅读 · 0 评论