自己制作一个动态库.
首先写一个简单的c功能函数
编译成动态库:gcc -fPIC -shared 文件名 -o lib库文件名.so 在linux系统下.程序运行时默认搜素库的路径是/lib
把库拷贝到/lib下:cp lib库文件名.so /lib 错误提示\denied(权限不足)
方法:sudo cp lib库文件名.so /lib 提示让你输入密码1: sudo暂时将普通用户 的权限提高到root用户权限
再编译一个c应用程序,在程序中来调用库里实现的函数
gcc 应用程序名 -l库名(注意是去掉lib和.so的库名)
文件IO
linux系统下一切设备皆文件
操作文件:
open():打开一个文件
read()://从文件里边读出数据 write()//向文件里写入数据 close()//关闭文件
man手册: man 2 函数名
open: 头文件
#include
1.int open(const char *pathname, int flags);//仅限于打开一个已存在文件
参数1:文件的路径 参数2:打开方式的标志
O_RDONLY,//只读方式打开 O_WRONLY,//只写方式打开 O_RDWR.//可读可写方式打开
第6页 共17页
返回值:
打开成功:返回一个正数(文件描述符) 打开失败:-1
2.int open(const char *pathname, int flags, mode_t mode);//可以打开一个不存在的文件 参数1:文件的路径 参数2:打开方式的标志
O_RDONLY,//只读方式打开 O_WRONLY,//只写方式打开 O_RDWR.//可读可写方式打开
如果文件不存在必须|O_CRAET,创建该文件 参数3:权限 数 比如:0666
返回值:
打开成功:返回一个正数(文件描述符) 打开失败:-1
write:
头文件: #include
typedef int ssize_t
ssize_t write(int fd, const void *buf, size_t count); 参数1:就是open函数的返回值,文件描述符 参数2:你想要写入的数据
参数3:你想要写入的数据的字节大小
返回值:
写入成功:返回的是写入的字节大小 写入失败:-1
strlen:实际长度 sizeof:数组的大小
arduino
viod setup() {
第7页 共17页
端口的配置; }
void loop() {
任务的执行; }
arduino之呼吸灯实验: int led=13; void setup() {
pinMode(led,OUTPUT); }
void loop() {
digitalWrite(led,HIGH); delay(1000);
digitalWrite(led,LOW); delay(1000); }
渐变灯: 暗->亮->暗
PWM波:可调脉冲宽度波.
3,5,6,9,10,11这几个端口可以输出pwm波 analogWrite(pin, value)//输出pwm波 pin:管脚号:3,5,6,9,10,11中的任意一个 value:0~255中的任何一个数: 0:占空比为0%
255:占空比位100%
远程视频监控步骤:
1.将jpegsrc.v8b.tar.gz(图片库)
和mjpg-streamer-code-182.tar.gz(视频查看软件) 拷贝到ubuntu的家目录 2.解压缩
tar xvf jpegsrc.v8b.tar.gz
第8页 共17页
3. cd jpeg-8b
4. ./configure //创建Makefile文件 5. make
6. sudo make install //安装
程序运行时,默认寻找的头文件的路径在/usr/include,库文件的路径/lib
cd /usr/local/include
sudo cp * /usr/include cd /usr/local/lib
sudo cp libjpeg* /lib 7.切换到家目录:cd
移植查看视频的软件:
tar xvf mjpg-streamer-code-182.tar.gz cd mjpg-streamer-code-182 cd mjpg-streamer
make clean //清除已经编译过的程序 make
运行查看视频的软件:sudo ./start.sh 打开火狐浏览器
在地址栏输入127.0.0.1:8080 若发现视频绿屏
先强制结束程序运行:ctl+c. 解决方法:
修改start.sh
将第30行的 -y 删除
看看是否虚拟机识别到摄像头:ls /dev/video0
地址栏输入:127.0.0.1:8080/?action=stream 查看视频信息
127.0.0.1:8080/?action=snapshot 截屏图片,点击save image as可以保存图片
A8开发板:
cpu:三星s5pc100 内存:256M flash:256M
windows运行之前会有一个系统的引导代码叫BIOS
与windows类似,linux启动之前也有这样的一段代码叫做bootloader bootloader有很多种,我们选用其中的一种叫做uboot.
第9页 共17页
linux系统的启动步骤
1.运行uboot(初始化硬件,引导系统内核的加载) 2.内核的运行(zImage,linux的内核).
3.识别文件系统(类似于C盘,D盘,E盘).是rootfs.tgz
系统=内核+文件系统.
挂载系统.
要对uboot环境信息进行设置
首先把拨码开关拨到0000位置.选择uboot的启动方式.uboot从外存启动. 1.找到自己的COM端口号;打开putty
2.选中Serial,把波特率改为115200,端口号改为自己的端口号,Flow contrlo选择none
3.开启电源,会出现一个倒计时,在倒计时完成之前,随便敲一个键盘. 4.输入命令print可以显示uboot的打印信息
确保:
ipaddr=192.168.1.100//代表开发板的ip地址 serverip=192.168.1.200//代表ubuntu的IP地址 bootargs=root=nfs nfsroot=192.168.1.200:/source/rootfs ip=192.168.1.100 init=/linuxrc console=ttySAC0,115200//
打开虚拟机:
1.进入到/tftpboot目录下.
把zImage拖到虚拟机,前加cp ,后加 ./ 使用ls查看一下是否出现zImage 2.cd /source
把rootfs这个压缩包拖到虚拟机,前加cp ,后加 ./ 使用ls查看一下是否出现rootfs.tgz 3.解压命令:
sudo tar -xvf rootfs.tgz
要让你输入密码;输入1回车即可,密码是不可见的. 再用ls查看是否多了一个蓝色的文件rootfs.
4.修改ubuntu的ip地址.
找到wiffi图标,点击选中edit connection->IPV4 seting->manual->add ip netmask gateway
第10页 共17页