链接库 链接库的行为是代码依赖管理的一种形式。 当任何应用程序运行时,其可执行代码都会加载到内存中。 此外,它所依赖的任何代码库也会加载到内存中。 有两种类型的链接:静态的和动态的。 两者都为开发人员提供了不同的好处,应该根据这些好处来选择合适的链接方式。 这篇博文将介绍每种方法提供的好处,然后解释如何在Linux上创建和链接您自己的库的基础知识。 动态链接 链接动态库时,没有任何库代码直接包含在链接目标中。 相反,在解析符号之前,这些库会在运行时加载到内存中。 因为代码不是静态链接到可执行二进制文件中的,所以在运行时加载有一些好处。 主要是,可以使用新功能或错误修复来更新...
缘由 新组装了一台台式机,需要将笔记本中的WSL子系统导出到新的台式机中,在转移过程中遇到了子系统DNS解析不正常和子系统与Host端口映射问题,在此进行一些记录。 系统导出 wsl --export [选项] wsl --export Linux linux.tar 系统导入 导入系统时,在新系统上执行wsl --help命令后没有--import选项;查找原因后发现需要wsl进行升级,安装[教程](https://docs.microsoft.com/zh-cn/windows/w...
使用wsl做开发有一段时间了,最近突然遇到在wsl中无法联网,查找原因发现是因为无法解析域名。 查看文件/etc/resolv.conf,里面解释文件是wsl启动时生成的,将文件里的namespace更改为8.8.8.8后,可以正常访问网络,但是重启之后,文件/etc/resolv.conf恢复成原来的了。 经过一番查找,按如下方法修改后,文件/etc/resolv.conf不在会改变。 sudo rm /etc/resolv.conf sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf' su...
使用vim进行c项目开发时,使用Coc-Clangd作为语言服务器实现自动补全。当对项目结构进行调整后(.h和.c文件分离到了不同的目录),Coc-Clangd需要一定的配置才能找到相关的.h文件,否则会出现错误: '*.h' file not found [clang: pp_file_not_found] 具体需要在项目根目录生成compile_commands.json文件或者compile_flags.txt文件: 当使用cMake时,可以运行cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1生成`compile_c...
setjmp() C 库宏 -- setjmp() \| 菜鸟教程(runoob.com) int setjmp(jmp_buf environment) 返回0,等待longjmp()调用setjmp()宏执行处返回新值 longjmp() [C 库函数 -- longjmp() \| 菜鸟教程 (runoob.com)](https://www.runoob.com/cprogramming/c-function-longjm...
c语言输出函数printf和fprintf使用修饰符格式化输出不同类型的变量。在这里总结一下各种不同的修饰符以及输出数据的格式。 修饰符 科学计数法 c语言输出修饰符 主要的修饰符如上表所示,而且可以在%和修饰符之间添加一个整型数字来指定输出内容的宽度,以及对齐方式。超出宽度的字符正常输出,负数表示左对齐: 另外针对整型和浮点型有特别的标识可以使用。 整形 整型主要包括short,int,long int,long long int以及它们对应的无符号类型unsigned short,unsigned int,`unsigned l...
测试网络情况 WSL访问window中的127.0.0.1 127.0.0.1 失败 wsl网关 失败 WSL访问windows中的wsl网关 127.0.0.1 失败 wsl网关 成功 配置转发,在windows中将wsl网关转发到对应localhost端口 配置转发 window可以使用netsh interface portproxy进行端口转发配置 添加转发 netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=80 connect...
指针中相对复杂的主要有三类情况:指针数组、数组指针和函数指针,以及三者相互嵌套的情况。弄清楚C中各类符号的运算优先级才能真正理解其含义。 C语言运算符号优先级 |优先级 | 运算符 | 结合律| |--------| -------------------------------------------------| ----------| |1 | 后缀运算符:[],(),.,->,++,-- | 从左到右| |2 | 一元运算符:`++,...
使用Input tf.keras.Input(shape=None, batch_size=None, name=None, dtype=None, sparse=False, tensor=None, ragged=False, **kwargs) Input初始化一个占位符 shape:指定模型输入的shape,不包括batch size batch_size:可选 name:可选,图层名称 dtype:字符串,数据类型 sparse:布尔,是否稀疏 `tensor...
总结 四则运算表达式求值分两步: 中缀转后缀,栈中存符号 后缀算结果,栈中存数字 中缀表达式与后缀表达式转换 中缀表达式1+(2-3)*4+5/6 后缀表达式1,2,+ 通过栈进行转换 |当前字符串|后缀表达式|栈| |:----|:----|:----| |1+(2-3)*4+5/6||| |+(2-3)*4+5/6|1|| |(2-3)*4+5/6|1|+| |2-3)*4+5/6|1|+(| |-3)*4+5/6|12|+(| |3)*4+5/6|12|+(-| |)*4+5/6|123|+(-| |*4+5/6|123-|+| |4+5/...