- 博客(13)
- 收藏
- 关注
原创 linux下的so、o、lo、a、la文件的区别
libtool主要的一个作用是在编译大型软件的过程中解决了库的依赖问题;将繁重的库依赖关系的维护工作承担下来,从而释放了程序员的人力资源。libtool提供统一的接口,隐藏了不同平台间库的名称的差异等细节,生成一个抽象的后缀名为la高层库libxx.la(其实是个文本文件),并将该库对其它库的依赖关系,都写在该la的文件中。lo: 使用libtool编译出的目标文件,其实就是在o文件中添加了一些信息。a: 静态库,其实就是把若干o文件打了个包。so: 动态链接库(共享库)o: 编译的目标文件。
2022-09-14 10:35:33
696
原创 在windows10上利用WSL安装Ubuntu(带桌面UI)
2.输入wsl --install (需要管理员权限),等待安装完成。3.点击开始菜单,选则安装好的ubuntu界面。1.打开powershell,右击开始菜单。6.使用windows远程桌面连接。5.给WSL安装桌面。
2022-09-13 17:15:37
6086
原创 查看ubuntu版本
proc目录下记录的当前系统运行的各种数据,version记录的版本信息可以直接通过cat查看到,还可以看到我的gcc版本呢。显示linux的内核版本和系统是多少位的:X86_64代表系统是64位的。
2022-09-12 17:33:15
1204
原创 cmake 同时生成动态库和静态库
cmake在构建一个新的target时,会尝试清理掉其他使用这个名字的库, 因此,在构建libhello.a时,就会清理掉libhello.so,为了回避这个问题,设置CLEAN_DIRECT_OUTPUT属性为1,就不会清理了。
2022-09-12 07:16:18
643
原创 gcc 工作流程中的4个阶段(预处理、编译和优化、汇编和链接)
GCC 编译器对程序的编译下图所示,分为 4 个阶段:预处理(预编译)、编译和优化、汇编和链接。链接:这个阶段需要 GCC 调用链接器对程序需要调用的库进行链接,最终得到一个可执行的二进制文件。第四步:将得到的二进制文件和标准库进制链接,得到可执行的二进制文件,不需要任何参数。汇编:这个阶段需要 GCC 调用汇编器对文件进行汇编,最终得到一个二进制文件。编译:这个阶段需要 GCC 调用编译器对文件进行编译,最终得到一个汇编文件。第三步:对得到的汇编文件进行汇编,需要使用的 gcc 参数为 -c。
2022-09-11 07:24:07
1598
原创 gcc与g++的区别
c.g++ 会调用 gcc,对于 C++ 代码,两者是等价的,也就是说 gcc 和 g++ 都可以编译 C/C++ 代码。b.g++ 可以自动链接到标准 C++ 库,gcc 如果要链接到标准 C++ 库需要加参数 -lstdc++:g++ 可以直接编译 C++ 程序, gcc 编译 C++ 程序需要添加额外参数 -lstdc++a.后缀为 .c 的,gcc 把它当作是 C 程序,而 g++ 当作是 C++ 程序。:不管是 gcc 还是 g++ 都可以编译 C 程序,编译程序的规则和参数都相同。
2022-09-11 06:58:18
1189
原创 Qt Sqlite 半自动化持久层类(支持多线程)
faultinfo.h:必须实现拷贝构造方法和赋值运算符,编写Q_PROPERTY,名字位对于的数据库字段名称。如Q_PROPERTY(int fault_code READ getFaultCode WRITE setFaultCode)上述代码从表fault_info中查出所有满足条件的List,很方便,不用自己去解析了!
2022-09-10 07:03:51
404
原创 Qt事件耦合器实现(类似C#的Prism中的事件耦合器)
该耦合器提供了一种事件机制,可以实现应用程序中松散耦合组件之间的通信。这种机制基于事件聚合器服务,允许发布者和订阅者通过事件进行通信,并且彼此之间仍然没有直接引用。简单来说就是提供了一个多播发布/订阅功能。Qt中自带的信号/槽也是一种解耦机制,但是当项目做大后要写好多connect来链接关系,有了事件耦合器后就不需要connect了。这样,一个发布/订阅的事件就完成了,也可以在任何时候取消事件注册,只需要调用Unsubscribe方法即可。看上图了解事件耦合器。
2022-09-09 07:07:29
338
Qt事件耦合器示例程序
2022-09-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人