【Linux/Gcc技术专栏】
文章平均质量分 61
本专栏讲解了Linux平台和GCC编译器相关的专业知识,通过本专栏的学习,基本可以掌握Linux平台和GCC编译器的使用。当前已经包含一些高质量的文章,后面会一直更新。
特别说明:
(1)订阅博主就能看博主的付费专栏和1000+篇文章。
(2)专栏总结文章全是博主多年工作经验总结和心血,绝对干货!
飞翔的鲲
一名音视频领域coder,喜欢深入钻研各种新技术(编解码、图像处理、算法优化等),擅长Matlab,Python,C编程。
CSDN明星博主,认证博客专家,视频、Matlab领域优质创作者。目前专注于音视频编解码和AI技术领域,开源分享,不忘初心,追求卓越!
欢迎订阅我的付费专栏,每篇都是博主的多年工作经验总结和呕心之作,任何问题都可以私信博主,必给您答疑解惑!希望我的博文可以帮助到你~
展开
-
【Linux系列】Linux下编译C/C++环境变量设置
DATE: 2020.6.29本文目录0、参考1、环境变量配置文件2、环境变量配置0、参考Windows/Unix/Linux编译C/C++添加头文件与库的搜索路径1、环境变量配置文件/etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置。/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash sh原创 2020-06-29 14:21:01 · 7288 阅读 · 0 评论 -
【Linux系列】gcc选项含义:CFLAGS、CXXFLAGS、LDFLAGS与LIBS
### Date: 2017/3/23###Author:SoaringLeeCFLAGS 表示用于 C 编译器的选项,CXXFLAGS 表示用于 C++ 编译器的选项。这两个变量实际上涵盖了编译和汇编两个步骤。CFLAGS: 指定头文件(.h文件)的路径,如:CFLAGS=-I/usr/include -I/path/include。同样地,安装一原创 2017-03-23 19:42:03 · 18897 阅读 · 0 评论 -
【Linux系列】Linux中Core Dump分析
Date: 2018.7.18文章目录1、参考:2、什么是Core Dump?3、Core Dump有什么用?4、怎么生成Core Dump?5、Core Dump文件生成在哪里?6、如何使用Core Dump文件?7、实例分析1、参考:https://blog.csdn.net/zp31415929/article/details/77528903?ref=myreadhttps://www.cnblogs.com/lidabo/p/5014710.htmlhttp://hutaow.com原创 2018-07-18 19:18:04 · 3643 阅读 · 5 评论 -
【Debug系列】GDB调试方法
Date: 2018.8.311、参考https://blog.csdn.net/listener51/article/details/81950131 https://www.cnblogs.com/qigaohua/p/6077790.html https://blog.csdn.net/yangzhongxuan/article/details/6901477 http...原创 2018-08-31 22:03:56 · 1600 阅读 · 0 评论 -
【Linux系列】Linux中dmesg命令详解
dmesg’命令对设备故障的诊断是非常重要的。在‘dmesg’命令的帮助下进行硬件的连接或断开连接操作时,我们可以看到硬件的检测或者断开连接的信息。‘dmesg’命令在多数基于Linux和Unix的操作系统中都可以使用。今天在调试硬件设备时,设备API报错但是没有打印信息,可以通过dmesg命令查看,应该是硬件将相关API使用报错写到了这个ring buffer中。记录在里面,以备后面使用。原创 2019-05-15 20:52:06 · 8943 阅读 · 1 评论 -
【linux系列】Ubuntu安装gcc提示错误
将更新一栏中的重要安全更新(bionic-security)和推荐更新(bionic-updates)两者勾选上。检查其他软件中更新源,我的更新源中包含了Ubuntu16.04LTS等官方支持的更新源,遂将其取消掉。关闭软件和更新窗口后,在终端中输入sudo apt-get update。最后即可安装成功gcc了。原创 2023-05-21 13:15:24 · 2037 阅读 · 0 评论 -
【Linux系列】Linux解决端口被占用的问题 bind: address already in use
首先用netstat -nap | grep 5212查看5212端口对应的进程(这里是知道端口的情况下使用这个命令)找到进程后用kill PID杀死这个进程。原创 2023-05-09 09:44:37 · 661 阅读 · 0 评论 -
【Linux系列】signal函数详解
sig要设置信号处理函数的信号。它可以是实现定义值或下例值之一:SIGABRTSIGFPESIGILLSIGINTSIGSEGVSIGTERM定义信号类型 (宏常量)handler 信号处理函数。这必须是下列之一:SIG_DFL 宏。信号处理函数被设为默认信号处理函数。SIG_IGN 宏。忽略信号。指向函数指针。函数签名必须等价于如下:extern “C” void fun(int sig);转载 2023-01-17 09:48:49 · 1285 阅读 · 0 评论 -
【Linux系列】Linux操作系统rpm包安装方式步骤
DATE: 2021.10.14文章目录一、rpm包安装方式步骤:二、deb包安装方式步骤:三、tar.gz源代码包安装方式:四、tar.bz2源代码包安装方式:五、apt方式安装:六、bin文件安装:七、不需要安装的软件:原文链接:https://blog.csdn.net/mark20170902/article/details/52115569特别值得一提的是Linux操作系统有很多值得学习的地方,这里我们主要介绍Linux操作系统,包括介绍Linux操作系统等方面。Linux操作系统软件安装转载 2021-10-14 11:57:53 · 14903 阅读 · 1 评论 -
【Linux系列】linux和solaris下设置和查看环境变量的方法
DATE: 2020.12.28文章目录0、参考1、Linux下环境变量1.1、设置环境变量1.2、查看环境变量2、Solaris下环境变量2.1、设置环境变量2.2、查看环境变量0、参考Solaris设置环境变量Solaris设置环境变量1、Linux下环境变量1.1、设置环境变量export PATH=/usr/bin:/binL/usr/local/bin1.2、查看环境变量env2、Solaris下环境变量2.1、设置环境变量PATH=/usr/bin:/binL/u原创 2020-12-28 16:48:45 · 355 阅读 · 0 评论 -
【Linux系列】Linux下常用文件搜索方法
DATE: 2020.11.17文章目录1. find2. locate3. whereis4. which5. type1. findfind是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。find的使用格式如下: $ find <指定目录> <指定条件> <指定动作> - <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。 - <指定条件>: 所要搜索的文件的特征。 - <指定动作>原创 2020-11-17 15:19:20 · 139 阅读 · 0 评论 -
【Linux系列】64位linux上支持运行32位程序的方法
DATE: 2020.6.11 64位linux上支持运行32位程序的方法转载 2020-06-11 11:42:42 · 3598 阅读 · 0 评论 -
__attribute__((visibility("default")))
__attribute__ 是设置函数属性(或者变量属性, 类型属性), 可以设置的属性包括 packed,cleanup, common,nocommon,deprecated,mode,section,shared,tls_model,transparent_union visibility属性是设置将本项目的函数作为库使用时的可见性。g++编译时, 加入-fv原创 2017-03-11 11:53:21 · 1163 阅读 · 0 评论 -
linux下时间有关的函数和结构体
1、时间类型。Linux下常用的时间类型有4个:time_t,struct timeb, struct timeval,struct timespec,clock_t, struct tm.(1) time_t是一个长整型,一般用来表示用1970年以来的秒数.该类型定义在中.一般通过 time_t time = time(NULL); 获取.(2) struct原创 2017-03-24 10:25:08 · 478 阅读 · 0 评论 -
Cygwin下不能运行make的解决方案
### Date: 2017/3/31### Author: SoaringLee今天在编译xvid源码时,对于Linux平台下需要用到cygwin,下载安装好长时间终于安装上了,但是不能执行make命令, 但没有make无法实现makefile相关的编译和安装。原因:默认的cygwin是不安装make的两种解决办法:1、卸载cygwin,重新原创 2017-03-31 21:23:25 · 14085 阅读 · 11 评论 -
Converity代码静态安全检测
最近公司在推行代码Security检查,使用了Converity代码静态检测工具。功能很强大,超乎我的期望。主要功能如下:列出不会被执行到的代码列出没被初始化的类成员变量列出没有被捕获的异常列出没有给出返回值的return语句某个函数虽然有返回值,但调用该函数的地方没有用到它的返回值,这也会被列出来列出没有被回收的new出来的对象列出没有被关闭的句柄精确定位到代码行,并提供逐层展开函数转载 2017-03-24 20:00:28 · 7080 阅读 · 0 评论 -
Cygwin下安装软件包的方法
有时候想用Linux下的一些小命令,比如diff,打开虚拟机下的Linux太费时又占用很大的计算资源,于是这种情况下选择了Cygwin。 Cygwin安装后可用的包并不是特别多,用setup.exe安装起来很不人性话。还好,有apt-cyg,和apt-get 一样强大,有了apt-cyg安装软件变得容易一些了。1 安装apt-cyg在Cygw原创 2017-04-01 17:13:44 · 6642 阅读 · 0 评论 -
GCC的符号可见性——解决多个库同名符号冲突问题
问题最近项目遇到一些问题,场景如下主程序依赖了两个库libA的funcA函数和libB的funcB函数。示意的代码(main.cpp)如下:#include int funcA(int, int);int funcB(int, int);int main() { printf("%d,", funcA(2, 1)); printf("%d\n",转载 2017-04-12 20:40:30 · 2485 阅读 · 0 评论 -
Linux Makefile中赋值运算符=,:=,?=和+= 之间的区别
### Date: 2017/4/17### Author: SoaringLee(1) := 是立即变量赋值,在定义时值已经被确定;另外一种理解: “:=”表示变量的值决定于它在makefile中的位置,而不是整个makefile展开后的最终值。(2) = 是延时变量赋值,只有在这个变量被使用时才展开,$(VAR)就是一种被使用 ;另外一种理解:make会将整个m原创 2017-04-17 19:40:13 · 1963 阅读 · 0 评论 -
【工程经验】Linux命令行下常用svn命令总结
### Date: 2017/4/17### Author: SoaringLee常用命令svn add file|dir -- 添加文件或整个目录svn checkout -- 获取svn代码svn commit -- 提交本地修改代码svn status -- 查看本地修改代码情况:修改的或本地独有的文件详细信息svn merge -- 合并svn和原创 2017-04-17 20:05:16 · 504 阅读 · 0 评论 -
Linux下时间函数:struct timeval结构体
Date: 2017/4/28Linux时间函数的结构体如下:#include "sys/time.h"struct timeval { __time_t tv_sec; /* Seconds. */ __suseconds_t tv_usec; /* Microseconds. */ }; 用法很简单,如下例所示:(1)定义时间结构体变量:...原创 2017-04-28 16:59:37 · 22470 阅读 · 2 评论 -
Linux 下ar命令和nm命令的使用方法
### Date:2017/4/18 ### Author: SoaringLee一、ar命令功能说明:建立或修改备存文件,或是从备存文件中抽取文件。语 法:ar[-dmpqrtx][cfosSuvV][a][b][i][备存文件][成员文件]补充说明:ar可让您集合许多文件,成为单一的备存文件。在备存文件中,所有成员文件皆保有原来的属性与权限。参 数:原创 2017-04-18 19:43:41 · 1126 阅读 · 0 评论 -
Linux中mount和umount的使用方法
### Date: 2017/4/19### Author: SoaringLeemount[选项]设备 挂载点功能说明:挂载文件系统。 umount [-ahnrvV][-t ][文件系统]功能说明:卸除文件系统。补充说明:umount可卸除目前挂在Linux目录中的文件系统。参 数: -a 卸除/etc原创 2017-04-19 14:04:51 · 1832 阅读 · 0 评论 -
关于Segmentation fault (core dumped)几个简单问题
有的程序可以通过编译,但在运行时会出现Segment fault(段错误)。这通常都是指针错误引起的。但这不像编译错误一样会提示到文件一行,而是没有任何信息。一种办法是用gdb的step, 一步一步寻找。但要step一个上万行的代码让人难以想象。 我们还有更好的办法,这就是core file。如果想让系统在信号中断造成的错误时产生core文件, 我们需要在shell中按如下设置:#转载 2017-04-19 14:10:42 · 11025 阅读 · 2 评论 -
Linux NFS服务器的安装与配置
一、NFS服务简介 NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。 NFS 的基本原则是“容许不同的客户端及服务端转载 2017-04-19 14:20:59 · 515 阅读 · 0 评论 -
SecureCRT下的串口不能输入
SecureCRT下的串口不能输入用SecureCRT建了一个串口COM1后,连接上开发板后,可以正确接受和显示串口的输出,但是按键输入无效。解决方法:Session Options -> Connection -> Serial -> Flow Control,将原先默认选中的 RTS/CTS取消掉,再重新connect开发板,再次连上后,此时就可以从键盘输入了。原创 2017-04-19 14:42:58 · 874 阅读 · 0 评论 -
Linux下文件的复制、移动与删除命令
### Date: 2017/05/10linux下文件的复制、移动与删除命令为:cp,mv,rm一、文件复制命令cp 命令格式:cp [-adfilprsu] 源文件(source) 目标文件(destination) cp [option] source1 source2 source3 ... directory 参数说明:原创 2017-05-10 20:19:47 · 687 阅读 · 0 评论 -
linux gcc编译参数: -fPIC
### Date: 2017/5/12参考:http://blog.sina.com.cn/s/blog_54f82cc201011op1.html http://www.cnblogs.com/cswuyg/p/3830703.html -fPIC 作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent原创 2017-05-12 16:02:29 · 1275 阅读 · 0 评论 -
mount device or resource busy
mount device or resource busy原因:挂载点已经挂载了东西,需要先卸载umount,然后重新挂载。原创 2017-04-22 14:44:57 · 13256 阅读 · 1 评论 -
【GCC】gcc中-pthread和-lpthread的区别
为了链接POSIX thread库,可以采用两种方法:直接在链接时,采用-plthread在编译和链接时都加上 -pthread 那么两者的区别是什么呢? 编译选项中指定 -pthread 会附加一个宏定义 -D_REENTRANT,该宏会导致 libc 头文件选择那些thread-safe的实现;链接选项中指定 -pthread 则同 -lpthread 一样,只原创 2017-05-18 20:13:56 · 1296 阅读 · 0 评论 -
linux如何查看系统信息
主要用到的命令有: cat /proc/cpuinfo和uname一:cpu[root@srv /]# more /proc/cpuinfo | grep "model name"model name : Intel(R) Xeon(R) CPU X3220 @ 2.40GHzmodel name : Intel(R) Xeon(R) CPU转载 2017-05-12 19:19:57 · 450 阅读 · 0 评论 -
ping:检查网络是否连通的Dos命令
Ping是Windows、Unix和Linux系统下的一个命令。ping也属于一个通信协议,是TCP/IP协议的一部分。利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。应用格式:Ping空格IP地址。该命令还可以加许多参数使用,具体是键入Ping按回车即可看到详细说明。PING (Packet Internet Groper),因特网包探索器,用于测试网络连原创 2017-04-22 18:48:09 · 2376 阅读 · 0 评论 -
关于Windows cmd下目录带空格的处理办法
### Date: 2017/4/22### Author: SoaringLee 今天在写一个转移脚本的时候,遇到了在利用copy将指定文件拷贝到指定目录下面,但是制定目录中带空格,导致dos不能识别。下面给出了3种解决方案: 1) 用缩写。比如c:\Program Files缩写为c:\Progra~1再来刨根问底查查这个命名是否有规则,于是找到:采用8个字符缩写,即写头六个原创 2017-04-22 19:06:54 · 20281 阅读 · 6 评论 -
Linux编译静态库和动态库的方法
1、Linux编译相关1.1 编译编译单个源文件 例如:main.c gcc main.c -o main ./main编译多个源文件 例如:hello.h hello.c main.c gcc mian.c hello.c -o hello ./hellogcc main.c -o main -v “加-v可以查看头文件以及库文件的转载 2017-04-23 22:03:34 · 627 阅读 · 0 评论 -
linux下valgrind内存泄露检查
参考:http://blog.csdn.net/listener51/article/details/53434769valgrind是Linux平台一个多用途的代码审查和内存调试工具。它可以在valgrind自己的环境中运行你的程序,监控malloc/free,(new/delete for C++)等内存调用。如果你用了未初始化的内存,数组越界写入,或者忘了free一个指针,val转载 2017-04-23 22:44:39 · 695 阅读 · 0 评论 -
Linux下C函数库:glibc与newlibc
### Date: 2017/5/9 ### Author :Soaringlee glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于 glibc 囊括了几乎所有的 UNIX 通行的标准,原创 2017-05-09 15:09:18 · 3601 阅读 · 0 评论 -
【GCC】gcc编译参数之-fno-strict-aliasing
### Date: 2017/5/18### Author: SoaringLee先来看下gcc对strict aliasing的解释: Allows the compiler to assume the strictest aliasing rules applicable to the language being compiled. For C (and C++),原创 2017-05-18 19:50:32 · 5114 阅读 · 0 评论 -
HARDFP ABI理解
ABI即“Application Binary Interface”,即编译器将C代码编译成汇编代码时使用的一种规则。ABI规范一般包括:(1)C类型的表示(int,short,long,union,struct...)(2)调用约定(Calling Convention),包括:如何传递函数参数和返回值;如果使用寄存器和堆栈。在编译带有浮点参数的函数时,有转载 2017-05-18 20:03:08 · 812 阅读 · 0 评论 -
-mfloat-abi=softfp的问题,指定fpu为neon
测试使用的C语言程序源码如下,程序源码文件是arm-c-disassemble.c:int sum(int a, int b){return a + b;}int sub(int a, int b){return a - b;}1、编译但是不汇编,查看产生的汇编源码程序源码:arm-Linux-androideabi-gcc -S -转载 2017-05-18 20:04:39 · 7170 阅读 · 1 评论 -
arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
目录命名规则 实例1、arm-none-eabi-gcc2、arm-none-linux-gnueabi-gcc3、arm-eabi-gcc4、armcc5、arm-none-uclinuxeabi-gcc 和 arm-none-symbianelf-gccCodesourceryABI 和 EABIarm-linux-gnueabi-g转载 2017-05-18 20:17:47 · 801 阅读 · 0 评论