linux
teanee
Talk is cheap, show me the money.
展开
-
内核线程创建的理解
kthread_create创建线程kthread_stop发送停止线程信号kthread_should_stop接收停止线程信号create:static int printsth(void* data){ int cnt = 150000; while(cnt > 0 &&! kthread_should_stop()){ printk("kct: %d\n", cnt); cnt--; msleep原创 2020-10-20 16:32:26 · 223 阅读 · 0 评论 -
rhel6.9上制作rpm安装包
1,源码结构与内容,打包放入BUILDROOT[ten@localhost ~]$ ll hello-0.1/total 8-rw-rw-r-- 1 ten ten 59 Jun 16 10:18 helloworld.c-rw-rw-r-- 1 ten ten 109 Jun 16 10:36 Makefile[ten@localhost ~]$ cat hello-0.1/Makefile RPM_INSTALL_ROOT:=all: gcc helloworld.c -o hel.原创 2020-06-16 10:53:16 · 411 阅读 · 0 评论 -
dlopen.dlsym.dlclose的应用
1.概念dlopen()指定模式打开指定的动态链接库文件,并返回一个句柄给dlsym()的调用进程,使用dlclose()来卸载打开的库。通俗的讲就是读取库内函数来使用库里的函数。2.流程打开库:void* dlopen(const char* libfile,int flag);取函数:void* dlsym(void* handler, const char* symbol);运行函数:func关闭库:int dlclose(void* handler);3.实例ru原创 2020-06-12 11:29:15 · 226 阅读 · 0 评论 -
ldd查询可执行文件和库对其他库的依赖
1.使用静态库编译出的执行文件与静态库的依赖[teanee@localhost sdlib]$ ldd test linux-vdso.so.1 (0x00007ffdd0197000) libc.so.6 => /lib64/libc.so.6 (0x00007f4aa94fa000) /lib64/ld-linux-x86-64.so.2 (0x000055630e42b000)[teanee@localhost sdlib]$ ldd libsd.a l...原创 2020-06-12 11:28:45 · 1147 阅读 · 0 评论 -
了解linux静态库&动态库
1,编写库相关文件sd.c:int sumab(int a, int b){ return a+b;}sd.hint sumab(int, int);Makefilesda: gcc -c sd.c ar rs libsd.a sd.o gcc test.c libsd.a -o test rm sd.osdd: gcc -c -fpic sd.c gcc -shared sd.o -o lib...原创 2020-06-12 11:24:26 · 182 阅读 · 0 评论 -
rhel6.9 mp4解码器
yum -y install http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm//yum install libdvdcss gstreamer{,1}-plugins-ugly gstreamer-plugins-bad-nonfree gstreamer1-pl...转载 2019-06-30 23:17:34 · 394 阅读 · 0 评论 -
编译busybox出现cannot find -lcrypt错误的解决办法
/usr/bin/ld: cannot find -lcryptcollect2: ld returned 1 exit statusmake: *** [busybox_unstripped] Error 1出现这个错误的原因是因为在配置busybox的时候,通常配置为静态编译,所以编译后在最后的链接阶段需要链接crypt的静态库文件(libcrypt.a),而非动态库文件(l...转载 2019-06-11 15:48:58 · 1666 阅读 · 0 评论 -
字符串数组初始化与赋值
char **args; 初始化一个二级指针。在内存中值会有sizeof(char**)大小的内存空间,这个变量是声明出来的,在栈空间,通常64系统的地址是8bytes。这8字节地址保存的是另一块内存的地址,但是这块内存还没有分配。那么这8字节的指向的内存应该保存什么呢?字符串的首地址的数组。所以char **args = (char**)malloc(3*sizeof(char*)); 这里...原创 2018-12-10 23:09:35 · 3549 阅读 · 0 评论 -
linux IPC 共享内存
共享内存更像是客户端从服务端申请内存(这里的服务端是内核,客户端是用户进程或线程),这块内存通过特殊标识来进行区分,通过内核的api,给定内存的特殊标识,内核返回给进程所需的内存。则可以通过对其对写实现进行通讯(因为其他进程只要知道这个特殊标识,就可以得到这块内存的读写权限)。因为设计到多进程对同一内存的读写,所以涉及到进程同步,需要加入信号量等其他东西。当然内存共享效率高。用法:#i...转载 2018-12-10 11:07:20 · 225 阅读 · 0 评论 -
C++ 多线程小试 卖个票
#include <iostream>#include <pthread.h>#include <unistd.h>int ticks = 10;static pthread_mutex_t mlock = PTHREAD_MUTEX_INITIALIZER;void* selltick(void* seller){ while(ticks...原创 2018-02-24 11:07:00 · 256 阅读 · 0 评论 -
C++ const成员函数与mutable变量
当在c++中,定义类时,对一个函数使用const进行修饰后,该函数将无法修改类成员变量的值,但对mutable修饰的成员变量没有这个限制。class foo{private: mutable int f;public: void setf(int a) const; void print() const;};void foo::setf(int a) const{...原创 2018-03-02 10:03:36 · 347 阅读 · 0 评论 -
fedora21 配置apache共享文件目录
vim /etc/httpd/conf.d/autoindex.conf添加如下Alias /ts "/ts" Options Indexes MultiViews FollowSymlinks AllowOverride None Require all granted127.0.0.1/ts 注意下目录权限即可转载 2015-08-11 17:26:26 · 467 阅读 · 0 评论 -
好记性不如烂笔头系列:编译ko模块相关
环境:[root@ko]# pwd/home/android/android-4.0/ko[root@ko]# lshello.c Makefile[root@omap]# pwd/home/android/android-4.0/omap[root@omap]# lsarch drivers Kbuild mm原创 2015-04-07 10:50:41 · 533 阅读 · 0 评论