学习新知识
文章平均质量分 53
JANYI2018
这个作者很懒,什么都没留下…
展开
-
Linux下指定so动态库的加载路径的5种方法种的指定环境变量方法详解!!!(.bashrc和 /etc/profile )
首先简单说一下什么是环境变量?环境变量简单的说就是当前环境下的参数或者变量。如果说的专业一点就是指在操作系统中用来指定操作系统的一些参数。 举个我们最常见的环境变量 —— PATH,它的用途就是当用户要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下寻找此程序外,还要到PATH变量中指定的路径去寻找。用户可以通过设置PATH变量,来更好的运行进程。举个常见的例...原创 2020-03-16 14:47:52 · 2016 阅读 · 0 评论 -
Linux下指定so动态库的加载路径的5种方法!!!
一、库文件的搜索路径:1、在配置文件/etc/ld.so.conf中指定动态库搜索路径(需要添加其它库文件的路径,在文件的最后添加具体的路径即可 [ 如:/usr/local/lib ],添加后保存退出,然后在命令行ldconfig2、通过环境变量LD_LIBRARY_PATH指定动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":"分隔)3、在编译目标代码时指...原创 2020-03-09 22:04:10 · 19044 阅读 · 0 评论 -
Linux命令修改文件名和文件夹名
Linux修改文件名语句:mv oldFileNamenewFileName示例:我想把 aaa1.txt修改为 bbb1.txt示例语句:mvaaa1.txtbbb1.txt把当前目录下的file1文件名改成file2,如果该目录下有file2,则覆盖以前的file2文件。...原创 2020-03-09 16:49:23 · 4868 阅读 · 0 评论 -
C语言如何将字符串转十六进制
通过查ASCII表知道:'a'对应的十六进制是是0x61,'A'对应的十六进制是0x41,'f'对应的十六进制是是0x66,'F'对应的十六进制是0x46,'0'对应的十六进制是是0x30,'9'对应的十六进制是0x39,其实这里的十六进制就是由字符对应的ASCII码转换得来的,下面主要讲下如何将数字0~9和26个英文字母转换成十六进制并存到数组中,直接贴代码分析。void StringToH...原创 2019-12-18 10:30:37 · 4387 阅读 · 0 评论 -
linux编译:提示/usr/bin/ld: can not find -lsqlite3 的解决办法
编译程序提示缺少sqlite3的情况下,如果在其他arm编译器下有现成的库,可以直接拷贝过来。sudo cp /opt/arm-2008q3/arm-none-linux-gnueabi/libc/armv4t/lib/libsqlite3.so /opt/arm-2013.11/arm-none-linux-gnueabi/libc/armv4t/lib/如下:有两个编译器 arm...原创 2019-12-03 12:03:08 · 1913 阅读 · 0 评论 -
linux_gcc编译器安装详细说明(arm-2013.11-33-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2举例)
1 在官网https://www.veryarm.com/arm-none-linux-gnueabi-gcc下载解压版arm-2013.11-33-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2sudo tar -xvf arm-2013.11-33-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar...原创 2019-12-03 10:45:58 · 653 阅读 · 0 评论 -
UDP和TCP总结
INADDR_ANY 、INADDR_LOOPBACK 、INADDR_BROADCAST这三个常量在文件中的定义如下:#define INADDR_ANY (u_long)0x00000000#define INADDR_LOOPBACK 0x7f000001#define INADDR_BROADCAST (u_long)...原创 2019-12-02 15:52:01 · 201 阅读 · 0 评论 -
递归复制 copy(cp)命令注意
root@dc:/media/dataindex# cp -r /media/dataindex/apptemp/. /media/dc/mt_tmnl698/app_zt/root@dc:/media/dataindex# cp -r /media/dataindex/apptemp/. /media/dc/mt_tmnl698/app_zt/root@dc:/media/dataindex...原创 2019-11-06 09:32:49 · 3636 阅读 · 0 评论 -
多个.C和.H文件的相互调用以及变量的跨文件使用
假如 有一个头文件 1.h 和源文件1.c 还有一个头文件 2.h和源文件2.c 函数的调用假如 有一个函数 在1.h 中声明 void xuexi(void) 在1.c中实现:先包含 #include "1.h" void xuexi(void) ...原创 2018-12-01 13:52:14 · 6287 阅读 · 7 评论 -
共用体位域的高低位
union{ UINT8 uc; struct { UINT8 priority : 4; UINT8 reserve : 3; UINT8 ret : 1;//该任务是否有数据返回 }bits;}un; un.uc=100; printf("%X\n",un.bits.priority); pri...原创 2018-12-19 15:41:23 · 2703 阅读 · 0 评论 -
转:Linux 各种BCD时间与Unix时间戳格式转换
在Linux C或C++编程中,因为应用场景的不同,经常会遇到各种时间之间的装换,有时需要BCD时间,有时需要Unix时间戳,也有叫绝对时间的。这里介绍几种时间格式转换的应用。Unix时间戳: Unix时间戳是一个绝对值,表示距离时间(1970-1-1, 00:00:00)的秒数。在C\C++ 语言中,用数据类型time_t 表示时间戳,time_t 本质上是一个long int。获...原创 2018-12-07 15:29:00 · 996 阅读 · 0 评论 -
c++中函数声明的后面加=0
纯虚函数是在声明虚函数时被“初始化”为0的函数。声明纯虚函数的一般形式是 virtual 函数类型 函数名 (参数表列) =0;注意: ①纯虚函数没有函数体; ②最后面的“=0”并不表示函数返回值为0,它只起形式上的作用,告诉编译系统“这是纯虚函数”; ③这是一个声明语句,最后应有分号。纯虚函数只有函数的名字而不具备函数的功能,不能被调用。它只...转载 2019-02-11 16:26:36 · 1523 阅读 · 0 评论 -
Linux下*.tar.gz文件解压缩命令(以及后台执行压缩命令,包括zip格式文件)
1.压缩命令: 命令格式:tar -zcvf 压缩文件名.tar.gz 被压缩文件名 可先切换到当前目录下。压缩文件名和被压缩文件名都可加入路径。 如果需要在后台执行,不占用进程的时间,需要在命令格式后面加 >/media/ram/c.txt& 完整命令如下:tar -zcvf 压缩文件名.tar.gz 被压缩文...原创 2017-11-07 11:41:29 · 5924 阅读 · 0 评论 -
linux下守护进程启动一个新应用进程的区别system、open和execl (execl在Ubuntu和linux执行的区别)
用C都可以调用,启动一个应用,在守护进程启动一个进程只能用 execl, systme和popen与execl实际上差别很大。system:启动另外一个应用之后,新应用的进程独立,当前进程也活着。即有两个互不影响的进程。execl:启动另外一个应用之后,新应用的进程即是当前进程。进程数是一个。 需要强调的是: system/popen都是阻塞的,即运行不结束就不会返回。 ...原创 2018-11-27 23:28:36 · 1050 阅读 · 0 评论 -
无论是static还是非static的局部变量,每个线程都是私有的,其他线程不会对其进行干扰。
无论是static还是非static的全局变量,如果不加限制随意访问的话易出现同步问题。无论是static还是非static的局部变量,每个线程都是私有的,其他线程不会对其进行干扰。...原创 2018-11-27 15:36:11 · 910 阅读 · 0 评论 -
一个结构体的双指针和一个结构体的数组指针使用例子(都可以)
1 结构体的数组指针DataFormatStr g_out_data_buf[2];DataFormatStr g_int_data_buf[20];typedef struct{ UINT32 di; UINT32 len; UINT8 buf[256];}DataFormatStr;/** @brief 电表数据格式转集中器数据格式...原创 2018-11-30 11:11:37 · 1678 阅读 · 0 评论 -
memcpy使用函数注意(如果格式不一样如:memcpy(&A[0],(char *)&B,4))
memcpy使用函数注意 如果格式不一样,则需要强制转换下: 如 char A[4]; int B, 如果需要copy,则memcpy(&A[0],(char *)&B,4);...原创 2018-11-29 15:15:50 · 1926 阅读 · 0 评论 -
头文件.H使用注意事项总结
1 A.htypedef enum{ RD_SUCCESS,//成功 RD_DATAERROR,//数据错误 RD_TIMEOUT,//超时 RD_FAILED,//失败} RD_RESULT;#define NORMAL_TASK 0x00这些enum #define可以在头文件定义,并且多个C文件都可以调用A.h文件。2 例如b.h...原创 2018-11-26 14:53:09 · 491 阅读 · 0 评论 -
串口阻塞和非阻塞
阻塞方式是文件读写操作的默认方式,但是应用程序员可通过使用O_NONBLOCK 标志来人为 的设置读写操作为非阻塞方式 .( 该标志定义在 < linux/fcntl.h > 中,在打开文件时指定 ) .阻塞: 在设计简单字符驱动程序时,要注意一个重要问题. 当一个设备无法立刻满足用户的读写请求时应当如何处理?...原创 2018-12-10 13:46:26 · 12678 阅读 · 0 评论 -
linux的添加网关 查看网关等信息
原文:https://www.cnblogs.com/lpfuture/p/5857738.html && http://blog.csdn.net/wangyan_hbu/article/details/51013602为了让设备能访问另一个子网,需要在设备里增加路由到子网络,一般来说都是为了能访问别的子网才设置路由的,比如说,你的主机处于192...原创 2019-01-25 09:59:34 · 12067 阅读 · 0 评论 -
浅谈C++类中的公有和私有
最忌讳的就是利用C++写C代码!利用C++写C代码最主要的一个特点之一把类里面所有的数据都声明成public的,本文就浅谈了一下如何利用public和private将代码分开的方法~~~#define: 1.关键字public可以将类的成员说明为是公有的,及可以被该类的所有成员所访问; 2.关键字private可以将类的成员说明为是私有的,它不能直接被对象访问。 其实,说白了就...转载 2019-02-11 14:37:22 · 5748 阅读 · 1 评论 -
如何解决消息队列传递数据出现stack smashing detected的问题
msgrcv的第三个参数不对,应该是sizeof(msg)-sizeof(long),也就是不包括msgtype部分的数据的长度。msgsnd的时候也是一样。不然发和收的时候都会多出sizeof(long)这么多个字节来,产生溢出,导致问题。...原创 2018-05-29 14:26:27 · 1070 阅读 · 0 评论 -
字符串二维数组作为函数的参数 void func(int (*mat)[10]);
字符串数组:比如 char a[3][24]={"hello","goodbye","goodb"};如果想把此字符串数组传出去void func(char (*mat)[24]);版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/u010383519/article/d...原创 2019-08-21 14:33:27 · 945 阅读 · 0 评论 -
linux怎么复制文件和复制文件夹
1 只复制一个文件cp /media/dataindex/collection /usr/bin/2 递归复制文件夹里面的所有内容cp -r /media/dc/log/ /media/dataindex原创 2019-07-05 09:54:10 · 5809 阅读 · 1 评论 -
多个动态库的依赖问题(先后顺序务必注意)
链接的库文件中又使用了另一个库文件 这种问题比较隐蔽,也是我最近遇到的与网上大家讨论的不同的问题,举例说明如下,首先,还是看看测试代码。 从上图可以看出,main.c调用了test.c的函数,test.c中又调用了fun.c的函数。 首先,我们先对fun.c,test.c,main.c进行编译,生成 .o文件。gcc -c func.c gcc -c test...转载 2019-06-17 19:49:08 · 10299 阅读 · 0 评论 -
修改一个文件夹下面所有文件和文件夹的属性--chmod -R 777 app_zt/
chmod -R 777 app_zt/app_zt/此文件夹原创 2019-05-29 17:07:28 · 23820 阅读 · 0 评论 -
如何在linux中运行中定义lib的路径在makefile里面
场景:比如执行程序testlog需要用到liblog.so,但是testlog在运行当中提示找不到所需要的动态库文件liblog.so(放在了/media/dc/mt_tmnl698/lib_zt目录)此时需要在编译testlog时的makefile需要改进如下:红色字体 定义运行时的路径TARGET_LIB_DIR =/media/dc/mt_tmnl698/lib_ztTA...原创 2019-05-29 14:11:34 · 3684 阅读 · 0 评论 -
指针易犯错的地方--self标记
TRANS_PROCESS是全局变量bool trans_carrier_frame(char retry, byte timeout, byte *frame, int length, byte* outbuff,int* outlen){ TRANS_PROCESS.outbuff =outbuff;byte BUFFER_FRAME[2] ={0,1};memcpy(TRA...原创 2019-06-12 15:50:05 · 153 阅读 · 0 评论 -
动态库编写 头文件.h注意事项
比如 log.h log.c 其中log.h 就几个函数的定义,用到的头文件很少。但是log.c文件里面会有很多函数的实现,用到比如 #include <string.h>#include <time.h>#include <limits.h>#include <signal.h>#include <unistd....原创 2019-05-30 18:56:51 · 4060 阅读 · 0 评论 -
std::string用法总结
在平常工作中经常用到了string类,本人记忆了不好用到了的时候经常要去查询。在网上摘抄一下总结一下,为以后的查询方便:string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化string类的字符操作:const char &operator[](int n)c...转载 2019-02-11 16:26:01 · 664 阅读 · 0 评论 -
回调函数的使用总结(非常重要)
使用场景: 如果本人要调用别人的库,而别人的库有时需要数据主动给本人,这时可以需要用到回调函数。别人的库 假设是 a.h 和a.C自己的文件是 b.h和b.c在a.h和a.c里面需要完成的是两个步骤:(1) a.h里面 定义回调函数指针 typedef INT32(*reporttaskdata_callback)(U...原创 2018-11-26 14:46:08 · 757 阅读 · 0 评论 -
list(链表)常用成员(顺序容器)----插入push_back,push_front,insert删除pop_back,pop_front,erase,clear遍历begin,end判空empt
list头文件:#include <list>using namespace std; list和vector的不同在于,vector采用的顺序存储,即vector中的元素像数组一样,一个紧挨着一个存放。所以vector可以进行随机存取。(通常情况下使用vector是最优的选择)。但是每当从vector中删除一个元素或向vector中插入一个元素时,代价都比较高。...原创 2018-11-12 09:46:46 · 2074 阅读 · 0 评论 -
SVN错误:cannot show diff because of inconsistent of newline in the file 的解决方法
原创 2018-10-30 15:45:22 · 2019 阅读 · 0 评论 -
调整内核printk的打印级别(启动脚本中运行 echo 0 4 0 7 > /proc/sys/kernel/printk 关闭所有内核打印)
有时调试内核模块,打印信息太多了,可以通过修改/proc/sys/kernel/printk文件内容来控制。默认设置是7 4 1 7# cat /proc/sys/kernel/printk7 4 1 7该文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处。关于不同日志级别的更多信息,请查阅syslog(2)联机帮助。上...原创 2018-08-10 09:44:36 · 8282 阅读 · 0 评论 -
sysconf()系统函数详解
sysconf()函数成功返回相应的值,错误返回-1,一般在调用这个函数的时候,errno是设置为0的。使用 sysconf() 函数时,必须注意: 1、CLK_TCK 的值是可变的,因此,不应该假设它是一个编译时间常量。 2、调用 setrlimit 会使 OPEN_MAX 的值发生改变。 3、 通过将 sysconf (_SC_PHYS_PAGES) 和 sysconf (_SC...原创 2018-07-30 14:39:41 · 6310 阅读 · 0 评论 -
String 类 的c_str()函数
先看一个例子:[html] view plain copyint lines, i; int left, right; <strong><u> string strleft,</u></strong> pNode tPointerArray[MaxNum]; pNode tPointer; bool f...原创 2018-06-25 20:29:40 · 1025 阅读 · 0 评论 -
C语言双指针的常见用法
鉴于工作经验有限,目前遇到的双指针的用法有如下几种情况,后续工作中如发现有其他的用法,会更新上去。1、用作函数的返回值,比较常见的是返回分配的堆内存地址。下面用一个例子进行说明下:[cpp] view plain copy/*****************************************************************************/ /** * \b...转载 2018-06-01 11:42:25 · 14469 阅读 · 1 评论 -
c语言中strlen所输出的字符长度到底要不要再加1 (指'\0')?
1字符串的长度是不包括'\0'的常见需要计算'\0'的情况是,以字符数组初始化一个字符串的时候,分配内存空间的情况。char str[]="123456";这时候数组str的大小需要计算'\0',也就是str有7个元素。2 经常在程序中拷贝字符串时需要加1,这样就把 结束符 '\0'也拷贝,不然容易出现乱码...原创 2018-05-31 16:31:41 · 6386 阅读 · 0 评论 -
linux while(1)循环一运行起来cpu几乎吃满,需要在循环里面加延时
一般延时 usleep(100*1000); 100毫秒足够了。原创 2018-05-30 11:36:36 · 4942 阅读 · 0 评论 -
linux下删除文件或文件夹的命令
使用rm -rf 目录名字 命令即可-r 就是向下递归,不管有多少级目录,一并删除-f 就是直接强行删除,不作任何提示的意思eg删除文件夹实例:rm -rf /var/log/httpd/access将会删除/var/log/httpd/access目录以及其下所有文件、文件夹删除文件使用实例:rm -f /var/log/httpd/access.log将会强制删除/var/log/httpd/...原创 2018-05-24 16:48:29 · 824 阅读 · 0 评论