1、windows中,一个软件一个独立的文件夹(文件夹下有这个软件的可执行程序,库文件,依赖文件,图标,图片,配置文件,帮助文档,小工具,数据文件等)
linux中,一个软件的可执行文件,可能放在 /usr/bin 下; 库文件、图标等可能放在 /usr/lib/xxx 下;日志信息可能在/var/log; 帮助文件可能放在 /usr/share/man 目录下。
我们可以使用 whereis 命令来查询一个软件的各部分分别放在哪个目录。
比如 whereis python3 whereis lua
2、linux的目录结构可以参考 Linux目录详解,软件应该安装到哪个目录_linux安装包放哪个目录-CSDN博客
linux的目录结构复杂,不直观。
至少有3套结构类似的目录, (/bin /sbin /lib /lib64) (/usr/bin /usr/sbin /usr/lib /usr/lib64) (/usr/local/bin /usr/local/sbin /usr/local/lib /usr/local/lib64)
可以看到操作系统会去简化。比如 ls -l /bin/ 可以看到系统没有去生成这个目录,而是用软连接链到了usr/bin目录 /bin -> usr/bin
这样一来,就可以看到,操作系统自带的软件,安装在/usr/目录下; 自己安装的软件(包括通过源代码 make install的软件,或者通过包管理器,比如yum install,或apt-get install安装的软件),放在/usr/local/下。 当然,还有一部分软件,喜欢windows的方式,自动安装在opt目录下,如下:
$ ls opt
app baidunetdisk bugtracker google kingsoft qt5 wine-qq
3、lib目录下,并不是只有动态链接库文件,还有其他文件。
为啥要有动态链接库呢? ---节省内存
为啥要有静态链接库+include文件呢? --不想公开源代码。
linux下动态与静态链接库的使用及区别 linux下动态与静态链接库的使用及区别-CSDN博客
链接时,静态库和动态库都需要加上 -l库名称 ;运行时,动态库必须放在操作系统默认的搜索路径下(实际上开发者也可以自己主动到固定位置去加载不同版本的库)
linux下:
静态库:lib库名.a
动态库:lib库名.so(shared object)
window:下
静态库:lib库名.lib
动态库:lib库名.dll(dynamic link library)
很多第三方库,既提供 .a库,也提供.so库,方便开发者使用
库文件,静态库,动态库,静态库和动态库比较_makefile 动态库 静态库区别-CSDN博客
4、make 和cmake
编写c代码,一般会用make来管理依赖和模块
编译Linux内核,用的是一个专用的cmake工具
5、RPM打包原理、示例、详解及备查 RPM打包原理、示例、详解及备查_打包rpm实例-CSDN博客
RPM的原理及rpm命令常用参数 RPM的原理及rpm命令常用参数_rpm原理-CSDN博客
6、 uid和gid chmod 命令 set uid ,set gid,sticky bit 说明 https://www.cnblogs.com/jary-wang/p/3149414.html
7、linux 下使用命令行发送消息和弹窗消息 linux下使用命令行发送消息和弹窗消息 - 阅心笔记
KDE/QT与GNOME/GTK比较 KDE/QT与GNOME/GTK比较_qt kde-CSDN博客