Loading... # 常见项目安装指令(Linux) 如果文件以tar.gz形式提供的话,那么首先要通过`tar -xvzf xxx.tar.gz`命令进行解压。 之后就是一套传统的automake chain了,大多数通过[GNU构建系统](https://en.wikipedia.org/wiki/GNU_Autotools)提供的软件,都可以如此便捷地配置: 1. 如果项目文件夹提供了`configure`文件,那么在对应文件夹内通过`.\configure`直接运行它进行配置——`configure`文件是通过autoscan和autoconf等工具形成的工具链创建的,它能够扫描并生成所有库依赖,都是上述GNU构建系统的组成部分。 1. 此时,可以通过`--prefix=[path]`指定安装目录,一般来说`\usr\local`比较合理,那么二进制文件就会安装在`\usr\local\bin`中。 2. 然后运行`make`命令,根据生成的`makefile`文件编译构建项目。 3. 之后是`make install`命令,这步实际上做的是将生成的文件移动到正确的目录位置[1],也就是说,对应的**系统路径**中。之后就完成了目标构建,即可使用。 4. 如果需要**清理**环境,过程则是递归的:首先是`make clean`清除编译产生的文件,之后是`make distclean`,清理生成的`makefile`文件等。 ## apt与apt-get apt和apt-get都是包管理器,apt是apt-get的常用命令精简版本(当然,也包括了apt-cache和一些其他内容)。所以以下只介绍apt: * `apt list [name]`可以**列举**包,`apt show [name]`则展示更详细的细节。 * `apt update`用于**更新包列表**,一般在换源/大更之前使用。 * `apt list --upgradable`可以列举所有当前系统中**可更新**的包。 * `apt upgrade [name]`用于**更新**包,如果不指定则检查所有包。 * `apt full-upgrade`通过适配所有包的状态来**更新系统**。 * `apt show [name]`可以展示软件包的**详细信息**,这个功能原本是`apt-cache show [name]`。 * `apt edit-sources`可以进入编写**软件源**。不过以防万一,最好还是手动进入目录复制原先的文件留档,然后再编辑。 ### 换源 apt的软件源文件在目录`etc\apt\`下,名为`sources.list`(另有一个`sources.list.d`文件夹,为第三方源的汇总)。我们可以将该文件复制一下备份,然后进行修改,我的换源内容为: ```sh #添加阿里源 deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse #添加清华源 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse multiverse ``` # cmake * cmake可以更换目标makefile格式,通过`-G generator-name`**指定要针对何种generator去生成对应的makefile**。 * 目标机器架构可以通过`-A platform`指定,可以指定为`Win32`或者`Win64`。当然,项目的`CMakeLists.txt`中也可以通过类似于 ``` set(CMAKE_GENERATOR_PLATFORM x64) ``` 的语法指定为`x64`或者`win32`架构。 * cmake会自动寻找当前目录下的`CMakeLists.txt`,如果我们要指定生成build的位置,可以 * 进入对应的文件夹,比如`cd bin`然后`cmake ..` * 更标准的做法是通过指令指定源文件和build位置,比如`cmake [options] -S <path-to-source> -B <path-to-build>` * 更多的命令,我们可以通过`cmake --help-command [cmd]`去查询帮助,通过`cmake --help-command-list`可以列出所有具体可供查询的命令。 * 当然了,cmake整体非常复杂,可以通过[完整文档](https://cmake.org/cmake/help/latest/index.html#)和[教程](https://cmake.org/cmake/help/latest/guide/tutorial/index.html)去学习。 # Linux常用命令 * `pwd`可以输出当前完整目录。`dir`可以查看**目录下的文件**,`ls`同理,都支持一些更复杂的展示。 * `lsof -i[:<port>]`可以展示端口占用情况 * `kill [-<SIG>] <PID>`杀死进程, `-9`为强制杀死, 不会清理. * 复制某个内容到剪切板: * `echo 'something' | pbcopy` * `find .`可以(附加其他选项)用来在目录下寻找文件内容,可以通过管道传给grep:`| grep xxx`去筛选每行内容。 * `tree`可以用**树**的形式展现文件结构,`-L x`选项指定递归层数 * `which`和`whereis`可以查找**命令所在位置**,前者只寻找可执行文件且较快,可以用`-a`限定不止可执行文件。(windows下为`where`但只在path中寻找,多半没什么用) * linux下命令的**帮助**一般以`--help`的形式提供,另可以通过`man xxx`查看命令完整手册。windows下多为`/?` * `chmod`改变文件**权限**,通过三个位掩码(`7=1+2+4`)形式提供权限代码,三个代码分别代表所有者、所有者同组用户和其他用户。`-r`可以递归修改内部所有文件. * 例如`chmod 777 xxx`可以将`xxx`文件夹设置为任意访问修改。 * chmod主题格式为:`chmod mode file`,其中mode格式为: ```plaintext [ugoa...][[+-=][rwxX]...][,...] ```` 比如给所有人增加运行权限,去除写权限就可以写为: ```plaintext chmod a+x,a-w file ``` * `mv`**移动**,`cp`**复制**,`rm`**删除**(对文件夹递归删除内含全部内容的话可以`rm -r`)。`mkdir`新建文件夹。 * `vim`命令: * `i`进入插入模式 * `vim -d xxx yyy`可以比较文件 * `:wq`保存并退出,`:q!`不保存强制退出 * `netstat`查看当前**网络**连接(windows相同),`ifconfig`查看网络状态。 * `ssh username@remote`进行ssh连接,可以通过`scp username@remote:file local_path`去下载对应文件到本地目录。如果需要下载完整目录,则需要使用`-r`选项, 且`-r`必须位于两个地址前。 * 如果需要上传,则**交换**`username@remote:file`和`local_path`的**顺序**即可。 * `tar`解压缩:对于`.tar.xz`文件使用`-xvf`指令,`.tar.gz`文件使用`-xvzf`指令。 * `zip dest.zip sources`:sources可以使用通配符或用空格隔开多文件,`-D`为不在zip中建立文件夹,`-r`递归,`-d`从中删除。 ## Linux下查找jdk ```powershell which java # ---> 找到jre所在位置 ls -l xxx # 重复跳转链接直到实际文件 找到jre为:/usr/lib/jvm/TencentKona-8.0.9-322/jre/bin/java 则对应jdk为:/usr/lib/jvm/TencentKona-8.0.9-322 ``` # mac常用指令 首先是[启用root账户](https://www.cnblogs.com/feiquan/p/11231567.html): * 输入`sudo su` * 输入当前账户密码 * 输入`passwd root`,然后设置root密码 之后就可以正常使用root账户了。 ## 永久别名 这可以通过设置`.bashrc`和`.bash_profile`来实现 (当然, 如果是bash以外的其他命令行环境则需要更改前缀如`.zshrc`等, 或直接使用通用的`.profile`). 命令行环境分为"交互-非交互"和"登录-非登录"两组四类. 交互式**登录**会调用`profile`系列文件, 而交互式**非登录**会调用`.xxxrc`系列文件. 一般来说, **我们可以在rc当中alisa出我们所需的别名**, 然后在`.bash_profile`中会指定运行哪些`.bashrc`文件以及`export`相关的环境变量. 操作是相同的. 不过, 这种设定**不对非交互式** (也就是, 不带`-i`选项执行shell的终端) **终端生效**. ## homebrew 然后是下载homebrew,官网上的指令从github-content下载,较不稳定,可以使用[tsinghua-tuna镜像](https://mirrors.tuna.tsinghua.edu.cn/help/homebrew/),有完整的介绍。之后不要忘记按照说明**换源**(镜像站的说明或下载完后的说明均可)。之后通过brew,我们就可以使用类似apt、yum的方式管理包了。 homebrew会将包下载到`opt/homebrew/Cellar`下,然后将其对应的可执行文件**软链接**(symbol link)到`opt/homebrew/bin`下。`brew list xxx`可以打印在Cellar下具体安装的内容. 通过homebrew下载的文件,可以通过`brew --prefix xxx`来找到其位置。 如果因为一些原因软链接未能自动生成(如软件包过老),我们可以通过`brew link xxx`的方式补齐。 ## 打开不受信任的软件 在访达 - 应用程序中找到, 点开右键列表, 使用**Ctrl + Click**打开即可. # pip 10.0以后的pip版本,可以通过 ```powershell pip config list -v ```` 来查看config**文件所在位置**以及**当前源**。 然后可以更换为豆瓣源(): ```powershell [global] timeout = 60 index-url = http://pypi.douban.com/simple trusted-host = pypi.douban.com # if you use http ``` [1]: https://superuser.com/questions/360178/what-does-make-install-do#:~:text=When%20you%20do%20%22make,files%20into%20appropriate%20locations. © 允许规范转载 打赏 赞赏作者 赞 1 如果觉得我的文章对你有用,请随意赞赏
1 条评论
有个问题是configure的生成是如何允许各种不同makefile工具生效的?等我学一下GNU Autotools完整写(