Linux常识

-Git        是一种版本控制系统,是一个命令,是一种工具,有点像cmd(命令行工具)。
Github  是一个基于git实现在线代码托管的仓库,向互联网开放,企业版要收钱。
Gitlab   类似 github,一般用于在企业内搭建git私服,要自己搭环境。
Gitee    即码云,是 oschina 免费给企业用的,不用自己搭建环境,可以建立自己的私有仓库。
Git-ce   是社区版,gitlab-ee是企业版,收费的。

Repo是基于git的仓库管理工具,是一个python脚本
Repo管理很多的git仓库,可以做统一的上传等其他操作,并且可以自动化部分Andoid开发流程

编译分为4步,预处理--》编译--》汇编--》链接。.c-->.i-->.s-->.o-->可执行程序。预处理是包含文件,展开宏。编译是将c转为汇编代码,汇编是将汇编代码转为机器码,链接是将不同的机器码组合为最终程序。-c表示将文件转为.o文件,比如可以把.c转为.o,也可以吧.i转为.o,也可以吧.s转为.o,也就是会根据源文件后缀,自动识别执行。

有时候说的编译是预处理---汇编---编译---链接。

gcc -o hello hello.c可以一步到位,当然,也可以按照下面四步,依次执行。

如果有多个c文件,要编译链接为一个程序,怎么做?可以gcc -o hello hey.c hi.c,但是不好,这样如果修改了某个文件,那么所有文件都要再经过从预处理到连接整个过程,浪费时间和资源。可以将每个c文件单独编译,最后将多个.o文件链接为可执行程序。

在命令末尾加-V,可以查看详细流程

头文件,尖括号的一般是系统的,也就是在gcc编译链目录内,在预处理时编译链会到编译链目录下查找。引号包含表示在当前目录查找。如果将自己定义的头文件用尖括号包含,那么预处理时会找不到,可以在末尾加-I dir,指定目录。也可以把自己写的头文件放到编译链内对应目录。当然,最好还是直接用引号包含自己的头文件。

可以把.o文件转为库,有静态库和动态库。

ar  crs  libhello.a  hello.o,将hello.o压缩为静态库libhello.a,当然多个.o也可以压缩为一个静态库。

可以把库和.o文件直接链接。gcc -o hello hello.o libhello.a

gcc  -shared  -o  libhello.so  hello.o,压缩为动态库。

gcc  -o  hello  hello.o  libhello.so,静态动态库连接方式一样,编译器都会在当前目录查找库。

而用另一种方式链接动态库,即gcc -o hello hello.o -lhello,库名前的lib和后缀.so被省略。这种连接方式,编译器默认会去编译链内的相关路径 ,可以把库文件放入编译链内部路径,也可以指定查找路径,gcc   -o   hello   hello.o   -L   ./   -lhello,-L指定路径,./表示当前目录。这种方式链接的程序,运行时要指定动态库路径,先执行export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./指定路径,再执行程序,./hello。

 NAT网卡用于虚拟机经主机访问外网,桥接网卡用于虚拟机和开发板沟通。

source insight是好用的代码编辑和阅读工具,无编译调试功能。用来阅读linux源码。

MobaXterm可以创建远程连接,比如可以远程连接ubuntu,当然,不仅如此,甚至还能创建串口连接,将开发板与主机连接,主机会自动安装驱动,在MobaXterm就可以创建串口连接,可以直接执行命令,因为刚出厂的imx6ull有内置系统。

如果将网卡比喻为身份证

插入的usb网卡代表windows(当然,windows可以有很多网卡),开发板自身有两网卡,有两个身份证,用eth0。虚拟机有两个虚拟网卡。桥接网卡用于和开发板,windows主机沟通。

usb网卡ip为192.168.5.10

ubuntu的桥接网卡(ens36)ip为192.168.5.11

开发板etn0网卡ip为192.168.5.9,注意,开发板ip可能会失效。每次应该检查。

配置完后,三个网卡可以互相ping通,经测试,没问题。

makefile

makefile文件,是对gcc命令的管理,使得更高效。内容可以如下

test:a.o b.o

        gcc -o test a.o b.o

a.o:a.c

        gcc -c -o a.o a.c

b.o:b.c

        gcc -c -o b.o b.c

如果要将多个.c文件编译链接为一个程序,上面那样就很麻烦。可用通配符简写如下

test:a.o b.o

         gcc -o test $^
%.o:%.c
         gcc -c -o $@ $<

还可以写clean

test:a.o b.o

         gcc -o test $^
%.o:%.c
         gcc -c -o $@ $<

clean:

        rm *.o test

这样直接执行make clean,当目录里有名为clean的文件时,就会认为目标文件存在,并且依赖文件不存在。就会提示已更新,可这是清除操作,怎么办,假想目标。

test:a.o b.o

         gcc -o test $^
%.o:%.c
         gcc -c -o $@ $<

clean:

        rm *.o test

.PHONY clean

将clean定义为假想目标,执行make clean就可以了。

A=NULL

B=abc

 A=NULL

B=123,C放在末尾不影响

函数foreach

函数filter和filter-out

函数wildcard,选择当前文件夹下的符合格式的文件

 选择真实存在的文件

patsubst函数,替换,注意,这里替换的是file变量里的,不是真实的文件。

前面的例子,都没有包含头文件,而大多数情况,.o文件不仅要依赖于.c文件,还要依赖于.h文件,比如

a.o : a.c a.h

如果有很多呢?难道要都手动写出来?不用,按照如下方式写即可,自动生成依赖文件并添加

CFLAGS,编译选项

1-Werror将所有警告视为错误,必须解决掉。-I表示指定默认查找头文件路径,比如-Iinclude,在当前目录的include文件夹查找头文件。

关于文件IO

文件权限,666表示110-110-110即所有用户都有读取写入的权限,没有执行权限。

open函数,参数如下

文件句柄,也叫文件描述符,整型,取值在3-1023之间,其中,0,1,2被系统占用。

 read函数

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值