网站建设方案 filetype doc百度快照推广有效果吗
news/
2025/10/5 16:30:44/
文章来源:
网站建设方案 filetype doc,百度快照推广有效果吗,成都高端网站建设公司哪家好,设计师服务平台可以下载目录
#x1f345;点击这里查看所有博文 随着自己工作的进行#xff0c;接触到的技术栈也越来越多。给我一个很直观的感受就是#xff0c;某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了#xff0c;只有经常会用到的东西才有可能真正记…目录
点击这里查看所有博文 随着自己工作的进行接触到的技术栈也越来越多。给我一个很直观的感受就是某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了只有经常会用到的东西才有可能真正记下来。存在很多在特殊情况下有一点用处的技巧用的不多的技巧可能一个星期就忘了。 想了很久想通过一些手段把这些事情记录下来。也尝试过在书上记笔记这也只是一时的书不在手边的时候那些笔记就和没记一样不是很方便。 很多时候我们遇到了问题一般情况下都是选择在搜索引擎检索相关内容这样来的也更快一点除非真的找不到才会去选择翻书。后来就想到了写博客博客作为自己的一个笔记平台倒是挺合适的。随时可以查阅不用随身携带。 同时由于写博客是对外的既然是对外的就不能随便写任何人都可以看到。经验对于我来说那就只是经验而已公布出来说不一定我的一些经验可以帮助到其他的人。遇到和我相同问题时可以少走一些弯路。 既然决定了要写博客那就只能认真去写。不管写的好不好尽力就行。千里之行始于足下一步一个脚印慢慢来 写的多了慢慢也会变好的。权当是记录自己的成长的一个过程等到以后再往回看时就会发现自己以前原来这么菜。 本系列博客所述资料均来自互联网资料并不是本人原创只有博客是自己写的。出于热心本人将自己的所学笔记整理并推出相对应的使用教程方面其他人学习。为国内的物联网事业发展尽自己的一份绵薄之力没有为自己谋取私利的想法。若出现侵权现象请告知本人本人会立即停止更新并删除相应的文章和代码。
什么是符号 这里的符号主要指的是全局变量和函数 Linux内核采用的是以模块化形式管理内核代码。内核中的每个模块相互之间是相互独立的也就是说A模块的全局变量和函数B模块是无法访问的。 不同模块间可通过导出宏将符号导出被导出的符号可被其他模块使用。
static int num 100;
static void show(void)
{printk(aaaa: num %d \n,num);
}
EXPORT_SYMBOL(num);
EXPORT_SYMBOL(show);Ubuntu中的符号表 Linux内核的全局符号表在/usr/src/linux-headers-xxxxx-generic/Module.symvers。
rootubuntu:# ls /usr/src/linux-headers-4.15.0-142-generic/
arch crypto firmware init Kconfig Makefile net security ubuntu
block Documentation fs ipc kernel mm samples sound usr
certs drivers include Kbuild lib Module.symvers scripts tools virt某个单独编译的内核符号表在代码根目录下。在模块编译好后在它的当前目录会看到一个Module.symvers文件这里存放的就是我们模块A导出的符号。
rootubuntu:# ls
helloa.c helloa.mod.c helloa.o modules.order
helloa.ko helloa.mod.o Makefile Module.symvers
示例源码 模块A的示例源码在模块A中使用EXPORT_SYMBOL导出整型变量num和void型函数show。
#include linux/init.h
#include linux/module.h
MODULE_LICENSE(GPL);
MODULE_AUTHOR(PD);
static int num 100;
static void show(void)
{printk(helloa_show num %d \n,num);
}
static int hello_init(void)
{printk(helloa_init \n);return 0;
}
static void hello_exit(void)
{printk(helloa_exit \n);return;
}
EXPORT_SYMBOL(num);
EXPORT_SYMBOL(show);
module_init(hello_init);
module_exit(hello_exit);在模块B中直接使用extern引入外部的定义即可。
#include linux/init.h
#include linux/module.h
MODULE_LICENSE(GPL);
MODULE_AUTHOR(PD);
extern int num;
extern void show(void);
static int hello_init(void)
{printk(hellob_init %d\n,num);show();return 0;
}
static void hello_exit(void)
{printk(hellob_exit \n);return;
}
module_init(hello_init);
module_exit(hello_exit);引用步骤 编译模块A将模块A编译生成的Module.symvers文件拷贝到模块 B目录下可选不拷贝的话在编译B时也只是会报一个警告不影响使用。建议拷贝程序员不能忽视任何一个警告才是对的。
WARNING: show [/home/peng/Desktop/driver/example/2_export/b/hellob.ko] undefined!
WARNING: num [/home/peng/Desktop/driver/example/2_export/b/hellob.ko] undefined!编译模块B操作正确的情况下正常是不会有任何的错误和警告的。
rootubuntu:# make
make -C /lib/modules/4.15.0-142-generic/build M/home/peng/Desktop/driver/example/2_export/b modules
make[1]: Entering directory /usr/src/linux-headers-4.15.0-142-genericCC [M] /home/peng/Desktop/driver/example/2_export/b/hellob.oBuilding modules, stage 2.MODPOST 1 modules
WARNING: show [/home/peng/Desktop/driver/example/2_export/b/hellob.ko] undefined!
WARNING: num [/home/peng/Desktop/driver/example/2_export/b/hellob.ko] undefined!CC /home/peng/Desktop/driver/example/2_export/b/hellob.mod.oLD [M] /home/peng/Desktop/driver/example/2_export/b/hellob.ko
make[1]: Leaving directory /usr/src/linux-headers-4.15.0-142-generic先加载模块A然后加载模块B。从日志中分析可知在加载模块A时先执行了helloa的加载函数。加载模块B的过程中执行模块B加载函数时首先引用了模块a的变量num紧接着又调用了模块A中show函数。
rootubuntu:# insmod ./helloa.ko
rootubuntu:# insmod ./hellob.ko
rootubuntu:# dmesg
[ 8167.354563] helloa_init
[ 8170.907883] hellob_init 100
[ 8170.907884] helloa_show num 100注意事项 加载的时候必须先加载A模块再加载B模块。否则会报错Unknown symbol in module。
rootubuntu:# insmod ./hellob.ko
insmod: ERROR: could not insert module ./hellob.ko: Unknown symbol in module
rootubuntu:# insmod ./helloa.ko
rootubuntu:# insmod ./hellob.ko卸载的时候必须先卸载B模块再卸载A模块。否则会报错Module helloa is in use by。
rootubuntu:# rmmod ./helloa.ko
rmmod: ERROR: Module helloa is in use by: hellob
rootubuntu:# rmmod ./hellob.ko
rootubuntu:# rmmod ./helloa.ko那么本篇博客就到此结束了这里只是记录了一些我个人的学习笔记其中存在大量我自己的理解。文中所述不一定是完全正确的可能有的地方我自己也理解错了。如果有些错的地方欢迎大家批评指正。如有问题直接在对应的博客评论区指出即可不需要私聊我。我们交流的内容留下来也有助于其他人查看说不一定也有其他人遇到了同样的问题呢。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/928466.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!