linux基础(二)

网络配置

====================

   1.  如果动态ip或者静态ip都无法上网(单词没有写错,ip地址写错,桥接和NAT不要搞错)

        桥接: ubuntu会单独由路由器分配ip,不和window共享ip

        NAT: ubuntu跟主机共享ip

   2. 跟linux基础有关的岗位

           研发《--- 技术支持,技术维护 《-- 技术类销售

           服务器管理

           系统运维  --》精通linux

linux基础

===================

   (1) 在线下载,更新软件源,卸载软件

        前提条件:ubuntu必须能够上网

        在线下载:  sudo  apt-get install   软件程序的名字

        更新软件源:第一个我们可以选择不同的ubuntu软件服务器

 

                              第二个我们可以更新下载源

                                                sudo   apt-get   update

        卸载软件:

                            sudo  apt-get remove  软件程序的名字

                       问题一: 卸载软件出现

            Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)

                       解决方法:用超级用户删除   /var/lib/dpkg/lock这个锁

       小实验: 卸载vim,重新安装vim

                       which  vim  --》路径

                       ls  -l   vim  --》软链接 --》真实的名字vim.gtk     

 

  (2) ps  top命令(系统编程的时候)

            查看当前系统中进程的运行状态

                ps   -elf

           动态查看进程的状态信息

                top

  (3) 重定向和追加重定向

           重定向:重新确定方向      >    会覆盖原来的内容

                ls   >  1.txt    //把ls的输出重定向到1.txt

                echo  "hello"  >  2.txt

          追加重定向:  >>    在末尾追加,不会覆盖文件中原本的内容

  (4) 查看文件大小

         du  文件名  -b  

         目录的大小:它里面所有文件和文件夹大小的总和

         ls   -l 查看普通文件大小是正确的,但是目录就不对(全部都是4096字节)

  (5) 目录树(树状图打印整个目录的层次结构)

        tree   目录名

  (6) 比较文件或者目录

        diff  1.c   2.c   -s   //比较两个文件,内容一样就打印提示

 

动态库和静态库

===============

       头文件:  函数的声明,函数的源码不在头文件中

       库文件: 把函数的源码编译成二进制的库文件,库文件就是用来存放函数源码的

linux中库文件有两种类型: 动态库和静态库

   (1)动态库

                linux规定动态库名字   libxxxx.so   //.so结尾   

                步骤:

                           第一步: 把.c文件编译成.o文件

                                          gcc   hello.c  -o   hello.o   -c

                           第二步: 把.o文件编译生成动态库文件

                                          gcc   -shared  -fPIC   hello.o   -o   libhello.so    // -shared   -fPIC 编译动态

库需要用到的编译选项

                           注意: hello.c中不能有main函数

     (2)   使用动态库

                   写法一:

                                            gcc  main.c   libhello.so   -o  main

                   写法二:      

                                            gcc  main.c   -o  main   -L动态库的路径名    -l动态库的名字

                                                                         动态库的名字: 去掉lib,去掉.so,剩余的就是

                                                                    gcc  main.c   -o main   -L/mnt/hgfs/share    -lhello

                   运行出现问题:

                                       error while loading shared libraries: libhello.so: cannot open shared object file: No such file or directory

                  动态库的特点:

                                       如果你的程序采用动态库编译,那么程序运行的时候需要加载动态库文件中的源码(默认去系统中存放库文件的环境变量 /lib  中查找)

                  解决方法:

                                 方法一:把我自己编译的动态库拷贝一份到系统的环境变量中  /lib

                                 方法二:我自己设置动态库的环境变量

                                                  export  LD_LIBRARY_PATH=/你的路径: $LD_LIBRARY_PATH      //一次性,关闭窗口,下次重新设置      

     (3) 遇到的问题

               部分同学编译动态提示  -fPIC有问题

               解决方法:   gcc  hello.c  -o  hello.o    -c  -fPIC          

                                    gcc  -shared  hello.o  -o   libhello.so       

     (4) 静态库(libxxxx.a)

              步骤:

                                    第一步: gcc   hello.c   -o   hello.o  -c   //生成.o文件

                                    第二步:.o文件编译生成静态库

                                                   ar  -rcv  libhello.a   hello.o   //注意书写格式

         使用静态库

                                    写法一:  gcc  main.c   libadd.a   -o  main

                                    写法二:  gcc  main.c  -o main   -L静态库路径    -l静态库的名字

              特点:  你使用静态库编译,静态库中的源码会被一起编译到程序中,运行程序的时候不需要依赖静态库

   (5) 对比动态库和静态库

                动态库编译的程序占用的存储空间要比静态库编译的小  

        如果动态库和静态库放在一起,编译器优先使用谁??      

                优先使用动态库编译         

       库文件好处: 方便代码升级,隐藏函数实现的细节

 

练习:

       1.  自己动手熟悉刚才的动态库编译过程,体会动态库的特点,思考如何让动态库的配置永久生效                                                          

(/etc/bash.bashrc)    答案:   把export设置语句写在这个文件的末尾

 

Makefile(课程大纲要求是比较低)

============

  1. 实际开发,复杂的Makefile都是用软件工具自动生成,autotool工具

  2. Makefile书写

         总的原则

         目标:依赖

                 为了达成目标需要做的事情

 

         伪目标:没有任何依赖的目标,就是伪目标

                       比如: clean:

        语法格式要求:

                Makefile名字固定的,没有后缀名

                语句必须用tab缩进,不能用空格代替

                单行注释采用#

       常见的问题:

                问题一:

                           make: 'main' is up to date.  //原因上一次make已经编译过该程序,再次make时候,由于代码没有做任何修改,就提示这个

                解决方法:  删除程序重新编译

 

作用:自动编译,自动管理你的工程项目

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值