树莓派配置固定IP地址

1、编辑文件/etc/dhcpcd.conf

root@raspberrypi:~# vi /etc/dhcpcd.conf

2、修改以下参数配置,如果没有就在文件底部添加

有线配置:
interface eth0
static ip_address=192.168.1.188/24
static routers=192.168.1.1
static domian_name_servers=114.114.114.114 114.114.114.115

无线配置:
interface wlan0
static ip_address=192.168.1.188/24
static routers=192.168.1.1
static domian_name_servers=114.114.114.114 114.114.114.115

3、重启系统

root@raspberrypi:~# reboot

树莓派更换apt-get源

1、树莓派的Raspbian系统是基于debian的嵌入式Linux系统,查看当前debian版本命令:

pi@raspberrypi:~ $ cat /etc/debian_version 
10.0
pi@raspberrypi:~ $ 

2、以10.0为例,更换apt-get源

# 编辑 `/etc/apt/sources.list` 文件,删除原文件所有内容,用以下内容取代:
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib

# 编辑 `/etc/apt/sources.list.d/raspi.list` 文件,删除原文件所有内容,用以下内容取代:
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui

注意:网址末尾的raspbian重复两次是必须的。因为Raspbian的仓库中除了APT软件源还包含其他代码。APT软件源不在仓库的根目录,而在raspbian/子目录下。

编辑镜像站后,请使用sudo apt-get update命令,更新软件源列表,同时检查您的编辑是否正确。

来自清华的镜像源:https://mirrors.tuna.tsinghua.edu.cn/help/raspbian/

静态库、动态库的制作

1、命名规则

  • 静态库:lib+名称.a  —> libSian.a
  • 动态库:lib+名称.so —> libSian.so

2、静态库制作

  • 准备目录:include、lib、src
  • 头文件存放在include中,源文件存放在src中,库文件存放lib中
  • 生成.o文件:在src目录中gcc -c *.c -I ../include 
  • 生成.a文件:ar rcs lib/libCalc.a src/*.o // 将src下的所有.o文件在lib目录下生成.a文件
  • 利用静态库编译源文件:
    • gcc main.c lib/libCalc.a -o main.out -I include
    • gcc main.c -L lib -l Calc -I include // L库目录,l库名称(不带lib前缀)
  • 整体目录结构及生成文件
    • ── include
    • │   └── head.h
    • ├── lib
    • │   └── libCalc.a
    • ├── main.c
    • ├── main.out
    • └── src
    •     ├── sub.c
    •     ├── sub.o
    •     ├── sum.c
    •     └── sum.o
  • nm命令:nm lib/libCalc.a 可查看.a文件的内容,nm main.out同样可以查看

3、静态库的优缺点

  • 优点:
    • 编译时会根据需要以.o为单位包含库中的内容
    • 发布程序时,不需要提供相对应的库(因为已经打包到应用程序中)
    • 加载库时速度快
  • 缺点:
    • 程序体积变大;
    • 库发生变化需要重新编译

4、动态库制作

  • 生成与位置无关的.o文件
    • gcc -fPIC -c *.c -I ../include 
  • 生成动态库.so文件
    • gcc -shared src/*.o -o lib/libCalc.so -I include
  • 使用动态库编译源文件
    • gcc main.c lib/libCalc.so -o main.out -I include // 方式一
    • gcc main.c -L lib -l Calc -o main1.out -I include // 方式二
    • 两种方式都能生成可执行文件,但方式二生成的执行文件在执行时会报错,./main.out: error while loading shared libraries: libCalc.so: cannot open shared object file: No such file or directory
    • 解决动态库无法找到的问题:
      • 使用lld命令查看可执行文件:ldd main1.out
      • 出现该问题的原因是无法通过环境变量找到动态库文件
      • 方法一:将libCalc.so拷贝到/lib下即可解决;(不推荐)
      • 方法二:export LD_LIBRARY_PATH=./lib 临时导入可以解决,当前终端生效;(临时)
      • 方法三:如果需要每次打开时都有效,在~.bashrc文件的末尾行添加上述指令;(重启终端)
      • 方法四:修改/etc/ld.so.conf文件,加入lib的绝对路径,sudo ldconfig -v更新 (建议)

5、动态库优缺点

  • 优点:
    • 动态库更新不需要更新源程序(接口不变情况下)
    • 执行程序体积小,不需要打包到应用程序中
  • 缺点:
    • 发布程序时需要提供给用户
    • 没有打包到应用程序中,执行效率相对慢一点