此篇博客做了大量验证性实验,并不是很成一个体系,只做一些随笔记录,并没有哪方面的专题。

常用命令语句可以参见如下:

Ubuntu常用命令大全 - linuxws - 博客园

linux命令详解 | 《Linux就该这么学》

1.虚拟机重新安装了Ubuntu20.04.3,安装完毕后,可以看到一些文件夹的起初状态,/usr/local文件夹里内容都为空。这个文件夹用来存放本地安装的程序,一些根库文件

其它的一些文件夹介绍见如下链接

Ubuntu根目录下各文件夹的功能详细介绍 - Yudar - 博客园

/etc/init.d是个什么文件夹_q469587851的博客-CSDN博客_init.d是什么

2.发现该桌面版本预装了python,但没有g++或者gcc编译器

3.常用的shell命令语句可参考如下链接

ubuntu及shell脚本常用命令入门_......、的博客-CSDN博客

linux/ubuntu常用bash/shell命令_忧郁一休-CSDN博客

4.这边联想到了windows下的lib和dll的区别

LIB和DLL的区别与使用 - 苦逼码农2014 - 博客园

以opencv编译出来的动态链接库为例,

可以看到这里的lib是上面提到的这种(包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library )

这也就是我们平时调用Opencv时,如果没有先配置好opencv的bin目录环境变量,又没有在执行文件exe的对应目录下放入对应lib的dll文件时,会报错。编译是没有问题的,因为lib里面本身就预定义了这些函数接口。编译到执行的一个大概过程可以参见如下博客 C/C++源代码到可执行程序的过程详解 - SilenceBook - 博客园

构建C++可执行程序 - 知乎

解决此问题方法之一就是把dll文件拷贝到exe的目录下。还有一个方法就是把bin文件添加到环境变量里去,让其能够找到。

同时博主也做了实验,就是环境变量里有两个路径下都有共同的名为opencv_world454d.dll,其中一个文件夹下的dll只是故意将别的dll名改为其,看其能否自动找到正确的dll,正确执行程序。验证下来,这个和环境变量里路径的添加顺序有关系。如下第一个路径下存放的是假的名为opencv_world454d.dll ,程序则不能正确执行,调换下顺序后,程序则能正确执行。

顺序:

程序优先考虑exe所在目录下是否有对应的dll,如果没有找到对应的dll,则会在环境变量路径下找,且只考虑索引到的一个出现此名的dll, 不会接着往下找。

5.同理,ubuntu下也有环境变量,下面说明下

/etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置。这个文件一般就是调用/etc/bash.bashrc文件。

/etc/bash.bashrc:系统级的bashrc文件,为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是"父子"关系。

/etc/environment: 在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量。

~/.profile: 在登录时用到的第三个文件 是.profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。

~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。不推荐放到这儿,因为每开一个shell,这个文件会读取一次,效率 上讲不好。

~/.bash_profile:每个用户都可使用该文件输入专用于自己 使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。

~./bash_login:不推荐使用这个,这些不会影响图形界面。而且.bash_profile优先级比bash_login高。当它们存在时,登录shell启动时会读取它们

~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.

~/.pam_environment:用户级的环境变量设置文件。

可参考如下博客:

Ubuntu环境变量——添加与删除 - bohaoist - 博客园

详解/etc/profile、/etc/bash.bahsrc、~/.profile、~/.bashrc的用途_jirryzhang的博客-CSDN博客

Ubuntu环境变量配置_小白成长记-CSDN博客_ubuntu 环境变量

Ubuntu 环境变量的设置_cc的专栏-CSDN博客_ubuntu环境变量

ubuntu环境变量的三种设置方法 - 星朝 - 博客园

export命令

env命令

echo $PATH

【命令】Ubuntu设置和查看环境变量_盐与黑胡椒的博客-CSDN博客

Ubuntu系统中使用echo向文件写入内容 - 夏洛蒂 - 博客园

接下来了解下软硬连接

https://jingyan.baidu.com/article/cbf0e5004e2dfd2eaa289393.html

ubuntu软连接建立与删除使用总结_CCS_330的博客-CSDN博客

Ubuntu 链接ln的使用:创建和删除符号链接 - 553490191 - 博客园

Ubuntu软连接命令_开发笔记-CSDN博客_ubuntu软连接命令

ubuntu下的软链接和硬链接_三哥的专栏-CSDN博客_ubuntu 软连接

经常还会碰到ldconfig命令语句,关于该命令的一些博客介绍如下

Linux ldconfig命令 - 红孩儿你好 - 博客园

ldconfig 命令_陈嘉怡的专栏-CSDN博客_ldconfig命令

6.ubuntu常见的安装软件的方法有三种:

(1)apt-get方式

ubuntu软件包安装卸载方法_zhw864680355的博客-CSDN博客

apt-get install xxx 安装xxx 。如果带有参数,那么-d 表示仅下载 ,-f 表示强制安装

apt-get remove xxx 卸载xxx

apt-get update 更新软件信息数据库

apt-get upgrade 进行系统升级

apt-cache search 搜索软件包

查看安装到哪里了可以参看

ubuntu查找apt-get安装的库的位置并添加到cmakelist中_weixin_36049506的博客-CSDN博客

用apt-get安装的软件都安装到哪儿去了 - Ubuntu中文论坛

(2)dpkg方式

(3)源码包下,编译完毕后make install

这是编译源代码的第一步,通过 ./configure 命令完成。执行此步以便为编译源代码作准备。常用的选项有 –prefix=PREFIX,用以指定程序的安装位置,然后sudo make, sudo make install

(4)aptitude方式

【Ubuntu】aptitude命令详解_widiot的博客-CSDN博客_aptitude

【Linux】ubuntu使用aptitude命令替换apt-get_love131452098的博客-CSDN博客

7.Ubuntu卸载软件的方法:

Ubuntu命令卸载软件_象牙塔下的渣渣-CSDN博客_ubuntu卸载软件命令

Ubuntu卸载软件:3种卸载方式_初识-CV的博客-CSDN博客_ubuntu 卸载软件

linux apt-get autoremove千万别乱用_笑看人生的博客-CSDN博客

ubuntu 卸载从源码安装的 emacs - Fienly - 博客园

apt - How to completely remove my Emacs? - Ask Ubuntu

8.更新源

cd /etc/apt下

然后可以备份下当前源

sudo cp sources.list sources.list.backup

然后修改其,参见我之前的博客

VMware Ubuntu20.04下挂载磁盘、更新源等常用配置_jiugeshao的专栏-CSDN博客

9.多版本下如何切换当前版本

博主当前系统已经默认安装了python3.8.10. /usr/bin下只有python3,并无python

博主想通过apt-get方式安装3.6,但出现如下信息:

Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'python3.6-2to3' for regex 'python3.6'
Note, selecting 'libpython3.6-stdlib' for regex 'python3.6'
0 upgraded, 0 newly installed, 0 to remove and 83 not upgraded.

是由于博主的默认源里并无这个库,非要安装这个库,可以更新源(仓库)或者从源码安装 ,博主这里apt-get python3.5吧

可以看到/usr/bin下多了一个python3.5(新的python版本)

使用如下命令看到python默认版本是python3.8

下面再通过源码方式手动安装python3.6

Index of /ftp/python/3.6.2/ 上下载Python-3.6.2.tgz, 并解压缩到home路径下(博主的路径)

命令行语句下执行

./configure

会出现报错信息

configure: error: in `/home/sxhlvye/Python-3.6.2':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details

同时执行如下查找命令,发现g++和gcc还未安装

可以通过如下命令安装一些基本的库

sudo apt-get install build-essential

如下也显示了即将要安装的库的内容,可以看到里面有g++和gcc

再回到前面源码安装python3.6

再次输入./configure开始正常进行安装,完毕后再执行sudo make,最后执行sudo make install

make install时,出现如下报错:

zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [Makefile:1067: install] Error 1

可以按照报错提示,安装下zlib库

这里又注意到了带-dev后缀的包,相关介绍可参见博客

ubuntu -dev -dbg 的软件包详解_sxpcccc的博客-CSDN博客

完毕后,重新在make install,成功。

在/usr/bin下并没有看到python3.6

可看到python3.6安装到了/usr/local/bin目录下了

参考博客:ubuntu安装python3.7,并更新python默认指向为python3.7_u014775723的博客-CSDN博客_ubuntu安装python3.7

此时电脑里python3已经存在了3.5, 3.6和3.8三个版本,如下可以指定python3命令时,指向的是python3.6版本

可看到已经切换为了3.6.2版本

同时查看pip3库的路径,只有一个目录下有,且pip3绑定的就是pip3.6,所以也不需要更改了

ubuntu16.04多版本Python任意切换(亲测有效)_zbr794866300的博客-CSDN博客

Ubuntu16.04多个版本GCC编译器的安装和切换 - 小淼博客 - 博客园

Ubuntu安装切换多个软件版本_honyniu的专栏-CSDN博客

pip指定python版本安装库 - 凉城旧巷 - 博客园

补充:

1.接下来会卸载掉3.5的python环境,用到上面的库卸载语句,因为python3.5当时是通过apt-get方式安装的,所以这里在终端上输入命令sudo apt-get --purge remove python3.5来删除(--purge是可选项,写上这个属性是将软件及其配置文件一并删除,如不需要删除配置文件,可执行sudo apt-get remove python3.5)

实际先使用了sudo apt-get remove python3.5命令,执行完毕后,发现python3.5版本还在

再使用purge方式,发现python3.5还在

只能手动一个个删除依赖库,不能使用autoremove

博主后来使用上文提到的aptitude安装和卸载是可以的,尝试删除上面的python3.5,发现其包和配置包都被卸载掉了。也发现源码安装的包有的时候并不提供uninstall命令,所以还是指定一个安装目录吧,所有文件都安装到一个指定目录下,删除也好删除。以后尽量按照这个来,减少不必要的麻烦。

linux下python3源码安装及卸载 - wuli潇潇 - 博客园

2.删掉上面提到的软链接中的目标文件/usr/local/bin/python3后,发现

/usr/bin下的python3显示出一个失效符号, 可以删除原来的软链接,重新再建立下软链接即可。

Ubuntu下的基本知识点(一)相关推荐

  1. Windows和ubuntu下一些提升效率的工具知识点以及typora和Obsidian配置

    文章目录 一.软件 windows ubuntu 二.软件知识点 三.Google chrome好用的插件 四.自己安装的Obisidian插件 五.Typora和Obsidian图片显示兼容问题 六 ...

  2. svn服务器安装位置,ubuntu下svn服务器安装配置--经过本人测试(非wwj)

    一.SVN安装 1.安装包 $ sudo apt-get install subversion 查看版本命令 svnserve --version(更多命令直接键入svnserve --help可查看 ...

  3. Ubuntu 下使用go语言调用ffmpeg推流

    Ubuntu 下使用go语言调用ffmpeg推流Ubuntu 下使用go语言调用ffmpeg推流 win10 安装 Ubuntu Windows Subsystem for Linux(WSL)适用于 ...

  4. ubuntu安装python库_Python安装:如何在ubuntu下安装python库

    上面介绍到了python安装中如何在Windows下按章python库,接下来上海python培训小编介绍另外一种方法:如何在ubuntu下安装python库. 在ubuntu下进行python库的安 ...

  5. 在Ubuntu下构建Bullet以及执行Bullet的样例程序

    在Ubuntu下构建Bullet以及执行Bullet的样例程序 1.找到Bullet的下载页,地址是:https://code.google.com/p/bullet/downloads/list 2 ...

  6. 在ubuntu下设置eclipse开发STM32等嵌入式设备

    之前为了能够让ROS与底层能够顺利通讯,我采用可开源开发板arduino ,因为arduino有ROS的库,能够按照ROS wiki上所给的教程就可以顺利的开发,但由于arduino的局限性,我觉得是 ...

  7. Ubuntu 下安装thttpd Web服务器

    不知道大家是不是真的需要用appache这么复杂的功能这么强大的web server,其实有很多时候使用webserver也只是一种远程共享访问的方式.这里,Ubuntu repository的提供了 ...

  8. Ubuntu下安装Apache+PHP+Mysql

    Ubuntu下安装 apache+php+mysql文本服务器! ------------------------------------------------------------------- ...

  9. Ubuntu下使用CMake编译OpenSSL源码操作步骤(C语言)

    OpenSSL的版本为1.0.1g,在ubuntu下通过CMake仅编译c代码不包括汇编代码,脚本内容如下: build.sh内容: #! /bin/bashreal_path=$(realpath ...

最新文章

  1. 一次完整的抓包分析 Reserved TCP/IP Port List
  2. 科普丨一文看懂语音识别的技术原理
  3. arcgis api for javascipt 加载天地图、百度地图
  4. localtime与localtime_r
  5. Spring Boot中的缓存支持(二)使用Redis做集中式缓存
  6. linux基础操作与实践,Linux操作系统基础与实践
  7. scrumndash;yesterday once more
  8. 一组关于女生的秘密数据!
  9. 在LINUX上部署SOFA
  10. 并发编程-------操作系统的发展
  11. IBGP的自己下一跳,指定源命令。
  12. 内连接,外连接,临时表,定义表,视图
  13. Java SSH框架学习
  14. 微信小程序:独立后台带分销功能月老办事处交友盲盒
  15. 【MM32F5270开发板试用】硬件IIC读取SHT20温湿度传感器
  16. openwrt中br-lan,eth0,eth0.1,eth0.2
  17. Java:获取两个区间内 为周几或星期符合 的所有日期,指定日期 使用周数计算出相对应的工作日
  18. Freemyapps赚取积分终极图文教程
  19. 初学Web:计算机气质个人主页
  20. 一些牛逼哄哄的javascript面试题

热门文章

  1. 控制账户、工作包和WBS字典
  2. 高等数学:第五章 定积分(6) 广义积分
  3. v412的ioctl命令
  4. 淘宝开店货源怎么解决?
  5. OpenCV-Python的一些简单用法
  6. ios 富文本 邮件_如何使iOS 10将语音邮件转录为文本
  7. php soap 返回值,PHP SOAP服务器根本不返回任何值
  8. DC-DC升压电路原理
  9. MinGW-w64 for Windows(x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z) 离线安装包附安装教程
  10. 测试接口(支付宝为例)