自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wohu1104的专栏

本博客为个人工作、学习和生活点滴记录

  • 博客(25)
  • 资源 (10)
  • 收藏
  • 关注

原创 VS Code 安装插件、自定义模板、自定义配置参数、自定义主题、配置参数说明、常用的扩展插件

1. 下载和官网教程下载地址:https://code.visualstudio.com/官方教程:https://code.visualstudio.com/docs2. 安装插件安装扩展插件有以下三种方式:选择 Code>Preferences>Extensions ;使用快捷键 Ctrl+Shift+X ;使用快捷键 Ctrl+Shift+P 进入命令面板,输入 Extensions: Install Extensions搜索扩展并进行安装;3. 自定义模板选择

2020-12-24 23:01:06 1337

原创 VS Code 离线安装插件方法

本文以离线安装 C/C++ 插件为例进说明,其它语言的插件的离线安装方法类似。离线安装 C/C++ 插件相对比较麻烦一些,主要是因为 C/C++ 插件还依赖其他需要在线下载的组件:C/C++ language components (Linux / x86_64)ClangFormat (Linux / x86_64)Mono Framework AssembliesMono Runtime (Linux / x86_64)但是也不是说不可以,可以先在可以上网的 Linux 机器上安装好环

2020-12-24 22:55:54 826

原创 浅显易懂 Makefile 入门 (12)— Makefile 常见的错误信息

1. 常见的错误信息make 执行过程中所产生错误并不都是致命的,特别是在命令行之前存在 -、或者 make 使用 -k 选项执行时。make 执行过程的致命错误都带有前缀字符串 ***。错误信息都有前缀,一种是执行程序名作为错误前缀(通常是 make);另外一种是当 Makefile 本身存在语法错误无法被 make 解析并执行时,前缀包含了 Makefile 文件名和出现错误的行号。在下述的错误列表中,省略了普通前缀:[FOO] Error NN[FOO] signal description

2020-12-22 22:16:51 14772

原创 浅显易懂 Makefile 入门 (11)— make 命令参数和选项汇总、make 中特殊目标汇总

1. make 命令参数和选项汇总在执行 make 命令时,有的时候需要加上一下参数选项来保证我们的程序的执行,比如只打印命令但不执行使用的参数是 -n ;只执命令不打印命令的参数选项是 -s;包含其它文件的路径参数选项是 -include;列举一下 make 可以使用的参数选项,以及它们的功能是什么。参数选项功能-b,-m忽略,提供其他版本 make 的兼容性-B,–always-make强制重建所有的规则目标,不根据规则的依赖描述决定是否重建目标文件。

2020-12-21 22:17:07 2493

原创 浅显易懂 Makefile 入门 (10)— 嵌套执行 make、export 的使用

1. 嵌套执行 make在一个大的工程文件中,不同的文件按照功能被划分到不同的模块中,每个模块可能都会有自己的编译顺序和规则,如果在一个 Makefile 文件中描述所有模块的编译规则,就会很乱,执行时也会不方便,所以就需要在不同的模块中分别对它们的规则进行描述,也就是每一个模块都编写一个 Makefile 文件,这样不仅方便管理,而且可以迅速发现模块中的问题。这样我们只需要控制其他模块中的 Makefile 就可以实现总体的控制,这就是 make 的嵌套执行。如何来使用呢?举例说明如下:subsys

2020-12-20 22:39:56 3575

原创 浅显易懂 Makefile 入门 (09)— include 文件包含、MAKECMDGOALS

1. include文件包含当 make 读取到 include 关键字的时候,会暂停读取当前的 Makefile,而是去读 include 包含的文件,读取结束后再继读取当前的 Makefile 文件。include 使用的具体方式如下:include <filenames>filenames 是 shell 支持的文件名(可以使用通配符表示的文件)。注意:include 关键字所在的行首可以包含一个或者是多个的空格(读取的时候空格会被自动的忽略),但是不能使用 Tab 开始,否

2020-12-19 13:06:32 8421 2

原创 浅显易懂 Makefile 入门 (08)— 默认 shell (/bin/sh)、命令回显、make参数(-n 只显示命令但不执行,-s 禁止所有回显)、单行命令、多行命令、并发执行

1. 默认 shellMakefile 所使用的命令是由 shell 命令行组成,他们是一条一条执行的。多个命令之间要使用分号隔开,Makefile 中的任何命令都要以 tab 键开始。多个命令行之间可以有空行和注释行,在执行规则时空行会被自动忽略。通常系统中可能存在不同的 shell 。但是 make 处理 Makefile 过程时,如果没有明确的指定,那么对所有规则中的命令行的解析使用 bin/sh 来完成。如:all: echo $(SHELL)执行 make 之后结果wohu@u

2020-12-17 22:11:41 3434

原创 浅显易懂 Makefile 入门 (07)— 其它函数(foreach 、if、call、origin )

1. foreach 函数foreach 函数定义如下:$(foreach <var>,<list>,<text>)函数的功能是:把参数 <list> 中的单词逐一取出放到参数 <var> 所指定的变量中,然后再执行 <text> 所包含的表达式。每一次 <text> 会返回一个字符串,循环过程中,<text> 的返所返回的每个字符串会以空格分割,最后当整个循环结束的时候,<text> 所返

2020-12-16 22:23:05 806

原创 浅显易懂 Makefile 入门 (06)— 文件名操作函数(dir、notdir、suffix、basename、addsuffix、addperfix、join、wildcard)

编写 Makefile 的时候,很多情况下需要对文件名进行操作。例如获取文件的路径,去除文件的路径,取出文件前缀或后缀等等。注意:下面的每个函数的参数字符串都会被当作或是一个系列的文件名来看待。1. 取目录函数 dir函数使用格式如下:$(dir <names>)函数说明:函数的功能是从文件名序列 names 中取出目录部分,如果names 中没有 / ,取出的值为 ./ 。返回值为目录部分,指的是最后一个反斜杠之前的部分。如果没有反斜杠将返回 ./。实例:OBJ=$(dir

2020-12-15 22:31:02 1380 1

原创 浅显易懂 Makefile 入门 (05)— 字符串处理函数(patsubst、subst、strip、findstring、filter、filter-out、sort、word)

1. 字符串函数格式函数调用的格式如下:$(<function> <arguments>)或者是${<function> <arguments>}其中,function 是函数名;arguments 是函数的参数,参数之间要用逗号分隔开;而参数和函数名之间使用空格分开。调用函数的时候要使用字符 $,后面可以跟小括号也可以使用花括号。2. 模式字符串替换函数 patsubst函数使用格式如下:$(patsubst <patt

2020-12-14 22:00:01 1188

原创 浅显易懂 Makefile 入门 (04)— 条件判断 (ifeq、ifneq、ifdef 和 ifndef)、定义命令包 define 和伪目标

1. Makefile 条件判断作用条件语句可以根据一个变量的值来控制 make 执行或者时忽略 Makefile 的特定部分,条件语句可以是两个不同的变量或者是常量和变量之间的比较。下面是条件判断中使用到的一些关键字:关键字功能ifeq判断参数是否不相等,相等为 true,不相等为 falseifneq判断参数是否不相等,不相等为 true,相等为 falseifdef判断是否有值,有值为 true,没有值为 falseifndef判断是否有值,没有值为

2020-12-13 23:31:38 29384 1

原创 浅显易懂 Makefile 入门 (03)— 目标文件搜索(VPATH 和 vpath 的区别和使用)、隐含规则

1. 目标文件搜索(VPATH和vpath)如果需要的文件是存在于不同的路径下(即源文件与 Makefile 文件不在同一个路径下),在编译的时候就用到了 Makefile 中为我们提供的目录搜索文件的功能。常见的搜索的方法的主要有两种:VPATH 是变量,使用时需要指定文件的路径,是搜索路径下所有的文件;vpath 是关键字,按照模式搜索,也可以说成是选择搜索。搜索的时候不仅需要加上文件的路径,还需要加上相应限制的条件;1.1 VPATH在 Makefile 中可以这样写:VPATH :

2020-12-12 21:55:32 3696

原创 浅显易懂 Makefile 入门 (02)— 普通变量和自动变量定义、使用($@、$^、$< 作用)、变量覆盖 override、变量的来源 origin

1. 变量的定义Makefile 文件中定义变量的基本语法如下: 变量的名称=值列表变量的名称可以由大小写字母、阿拉伯数字和下划线构成。等号左右的空白符没有明确的要求,因为在执行 make 的时候多余的空白符会被自动的删除。至于值列表,既可以是零项,又可以是一项或者是多项。如: name_list = aa bb cc调用变量的时候可以用 $(name_list) 或者是 ${name_list} 来替换,这就是变量的引用。实例:OBJ=main.o test1.o test2.o tes

2020-12-11 22:16:13 991

原创 浅显易懂 Makefile 入门 (01)— 什么是Makefile、为什么要用Makefile、Makefile规则、Makefile流程如何实现增量编译

1. 什么是 MakefileMakefile 文件描述了 Linux 系统下 C/C++ 工程的编译规则,它用来自动化编译 C/C++ 项目。一旦写编写好 Makefile 文件,只需要一个 make 命令,整个工程就开始自动编译,不再需要手动执行 GCC 命令。一个中大型 C/C++ 工程的源文件有成百上千个,它们按照功能、模块、类型分别放在不同的目录中,Makefile 文件定义了一系列规则,指明了源文件的编译顺序、依赖关系、是否需要重新编译等。Makefile 可以简单的认为是一个工程文件的编译

2020-12-10 22:27:13 15081

原创 GCC 链接 xxx:No such file or directory 及运行可执行文件 error while loading shared libraries: xxx.so 解决方案

关于 GCC 提示找不到指定库文件的这个问题,通常出现在以下 2 个场景中:利用静态库或者动态库文件实现链接操作(生成可执行文件)时,·GCC 可能会提示 xxx:No such file or directory(其中 xxx 表示查找失败的静态库或者动态库);执行借助动态库生成的可执行文件时,GCC 可能会提示 ./main.exe: error while loading shared libraries: xxx.so: cannot open shared object file: No s

2020-12-09 22:14:57 24617 1

原创 GCC 编译 C(C++)静态链接库(gcc -L、gcc -l)和动态链接库(gcc -fPIC -shared)的创建和使用

1. 库文件所谓库文件,读者可以将其等价为压缩包文件,该文件内部通常包含不止一个目标文件(也就是二进制文件)。值得一提的是,库文件中每个目标文件存储的代码,并非完整的程序,而是一个个实用的功能模块。例如,C 语言库文件提供有大量的函数(如 scanf()、printf()、strlen() 等),C++ 库文件不仅提供有使用的函数,还有大量事先设计好的类(如 string 字符串类)。库文件的产生,极大的提高了程序员的开发效率,因为很多功能根本不需要从 0 开发,直接调取包含该功能的库文件即可。并且,

2020-12-08 22:11:26 37394 4

原创 GCC 同时编译多个 C/C++ 文件

以下这些操作都可以共用一条 gcc 指令:将多个 C/C++ 源文件加工为汇编文件或者目标文件;将多个 C/C++ 源文件或者预处理文件加工为汇编文件或者目标文件;将多个 C/C++ 源文件、预处理文件或者汇编文件加工为目标文件;同一项目中,不同的源文件、预处理文件、汇编文件以及目标文件,可以使用一条 gcc 指令,最终生成一个可执行文件;目录结构如下:wohu@ubuntu:~/cpp/src$ tree ././├── function.cpp├── function.h└──

2020-12-07 23:24:27 18233

原创 GCC 连接器、链接标准库 gcc -l、链接手动创建库(指定目录的库 gcc -L)

1. 链接器链接器把多个二进制的目标文件(object file)链接成一个单独的可执行文件。在链接过程中,它必须把符号(变量名、函数名等一些列标识符)用对应的数据的内存地址(变量地址、函数地址等)替代,以完成程序中多个模块的外部引用。而且,链接器也必须将程序中所用到的所有 C/C++ 标准库函数加入其中。对于链接器而言,链接库不过是一个具有许多目标文件的集合,它们在一个文件中以方便处理。当把程序链接到一个链接库时,只会链接程序所用到的函数的目标文件。在已编译的目标文件之外,如果创建自己的链接库,

2020-12-07 22:27:12 5586

原创 GCC 编译 C++ 程序分步骤流程(预处理 gcc -E、编译 gcc -S、汇编 gcc -c 和链接 gcc 以及 gcc -o 选项)

C 或者 C++ 程序从源代码生成可执行程序的过程,需经历 4 个过程,分别是预处理、编译、汇编和链接。同样,使用 GCC 编译器编译 C 或者 C++ 程序,也必须要经历这 4 个过程。但考虑在实际使用中,用户可能并不关心程序的执行结果,只想快速得到最终的可执行程序,因此 gcc 和 g++ 都对此需求做了支持。#include <iostream>int main(){ std::cout << "hello,world" << std::endl;

2020-12-06 22:48:20 3872 1

原创 gcc 自动识别的文件扩展名,gcc/g++ -x 选项指定语言,不同 gcc 版本 -std 编译选项支持列表

对于执行 C 或者 C++ 程序,需要借助 gcc(g++)指令来调用 GCC 编译器。对于以 .c 为扩展名的文件,GCC 会自动将其视为 C 源代码文件对于以 .cpp 为扩展名的文件,GCC 会自动将其视为 C++ 源代码文件1. GCC自动识别的文件扩展名除此之外,GCC 编译器还可以自动识别多种扩展名,如下表所示,即根据不同的扩展名确定该文件该怎样编译。注意,上表仅罗列了 GCC 编译器可识别的与 C 和 C++ 语言相关的文件后缀名。除此之外,GCC 编译器还支持 Go、Obje

2020-12-05 23:23:46 1348

原创 gcc 和 g++ 的联系和区别,使用 gcc 编译 c++

GCC 编译器已经为我们提供了调用它的接口,对于 C 语言或者 C++ 程序,可以通过执行 gcc 或者 g++ 指令来调用 GCC 编译器。实际使用中我们更习惯使用 gcc 指令编译 C 语言程序,用 g++ 指令编译 C++ 代码。需要强调的一点是,这并不是 gcc 和 g++ 的区别,gcc 指令也可以用来编译 C++ 程序,同样 g++ 指令也可以用于编译 C 语言程序。实际上,只要是 GCC 支持编译的程序代码,都可以使用 gcc 命令完成编译。可以这样理解,gcc 是 GCC 编译器的通用编

2020-12-05 22:43:37 4197

原创 gcc/g++ 在 Linux、Windows 系统安装

1. GCC 简介谈到 GCC,就不得不提 GNU 计划。GNU 全称 GNU’s Not UNIX,又被称为“革奴计划”,由理查德·斯托曼于 1983 年发起。GNU 计划的最终目标是打造出一套完全自由(即自由使用、自由更改、自由发布)、开源的操作系统,并初步将其命名为 GNU 操作系统。在 Linux 内核的基础上,GNU 计划开发了很多系统部件,GCC 就是其中之一(除此之外,还有 Emacs 等非常实用的软件)。早期 GCC 的全拼为 GNU C Compiler,即 GUN 计划诞生的 C

2020-12-03 23:10:34 4646 2

原创 Go 学习笔记(69)— Go Modules 使用详解(设置GO111MODULE、设置代理、初始化项目、创建依赖项、回退依赖项版本、删除未使用的依赖项)

采用 Go Module 的方式,可以在任何位置创建你的 Go 语言项目。假设你的项目位置是 /home/wohu/demo,打开终端,输入如下命令切换到该目录下:$ cd /home/wohu/demo然后再执行如下命令创建一个 Go Module 项目:$ go mod init go_demo执行成功后,会生成一个 go.mod 文件。然后在当前目录下创建一个 main.go 文件,这样整个项目目录结构是:wohu@wohu:~/demo$ tree.├── go.mod├──

2020-12-02 22:56:32 19880 4

原创 Go 学习笔记(68)— goroutine 并发控制神器 Context

1. 什么是 Context一个任务会有很多个 goroutine 协作完成,一次 HTTP 请求也会触发很多个 goroutine 的启动,而这些 goroutine 有可能会启动更多的子 goroutine ,并且无法预知有多少层 goroutine 、每一层有多少个 goroutine 。如果因为某些原因导致任务终止了,HTTP 请求取消了,那么它们启动的 goroutine 怎么办?该如何取消呢?因为取消这些 goroutine 可以节约内存,提升性能,同时避免不可预料的 Bug。Contex

2020-12-02 22:04:54 813 2

原创 Go 学习笔记(67)— Go 并发安全字典 sync.Map

1. 并发不安全的 mapGo 语言中的 map 在并发情况下,只读是线程安全的,同时读写是线程不安全的。换句话说,在同一时间段内,让不同 goroutine 中的代码,对同一个字典进行读写操作是不安全的。字典值本身可能会因这些操作而产生混乱,相关的程序也可能会因此发生不可预知的问题。package mainimport ( "fmt" "time")func main() { m := map[int]string{ 1: "haha", } go read(m) ti

2020-12-01 22:56:50 758

数据结构与算法分析 算法的经典著作

经典的数据结构算法与分析 可以与C语言结合起来很好的学习 对于提高C有很大的帮助

2011-05-24

C语言经典编程实例 带程序结果

C语言经典编程,给出了在学习C的过程中的经典程序,值得一看,很实用的,是学习C很好的材料,可以帮你少走弯路。

2011-05-24

OFDM MATLAB 仿真程序

OFDM的 MATLAB 仿真程序,可以帮助你更好的理解OFDM的原理,以及在学习过程中更好的利用OFDM做毕业设计等等。

2011-05-22

4位EDA计数器(VHDL语言)

详细说明了4位十进制的VHDL表示方法,以此为经验可以编写任意进制的计数器

2011-05-20

4位十进制频率计设计

详细讲述了4位十进制频率机的设计以及应用,很有帮助对学习VHDL

2011-05-20

高质量的C++/C编程指南

很好的一本书,有了它找工作很方便的,书中列举了各种常犯的错误,是用人单位最爱考的部分。很好,用过就知道

2011-05-14

C语言趣味程序百例精解

主要针对C语言的初学者,很有启发性,可以认真的看看

2011-05-08

让你不再害怕指针 经典的指针讲解和练习

拥有它 你就可以完全理解C的精华 再也不害怕指针了 堪称经典!!

2011-02-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除