Linux系统下常用工具——自用

Linux系统下的常用指令

更改用户权限和组权限(这一操作得在root用户下进行)

# chown -R xxxxx:xxxxx 文件名

其中xxxxx为所需要更改的用户名。假如我现在有个用户叫haha,有一个权限为root的hello.c的文件,我需要将hello.c的文件的权限更改为haha用户权限,那么应该写如下指令:

# chown -R haha:haha hello.c

迭代的删除文件

$ rm -r 文件夹名

比如说现在有一个叫test的文件夹,test文件夹目录下还有其他的文件夹或者文件,那么我想要将test以及其文件夹下面的所有文件一并删除就可以采用上面的命令行实现。具体指令如下:

$ rm -r test

代码的编译与运行(利用gcc)

$ gcc xxx.c -o xxx
$ ./xxx

使用g++编译

g++ test.cpp -o testout
# -o testout : 表示输出结果保存在testout中

# 使用c++11编译
g++ -std=c++11 test.cpp -o testout

生成汇编文件

gcc -S test.c -o test.s

说明:
	直接使用`cat test.s`就可以查看汇编文件的内容了
	

只编译不链接

gcc -c test.c -o test.o
# -c : 表示只编译不链接

说明:
	此时生成的test.o是一个目标文件,并不是一个可执行文件,不过不管是目标文件还是可执行文件,它们的格式都是ELF。

动态链接

ld a.o b.o -o ab

说明:
	a.o和b.o都是未经过链接的目标文件,使用ld将它们俩链接在一块,生成的文件存放在ab中。
	此时ab为一个可执行文件。

查看当前目录的完整路径

$ pwd

移动文件 或 修改文件名

# 修改文件名
mv filename1 filename2

# 移动文件(从当前目录移动到/home/目录下)
mv filename /home/filename 

拷贝文件

# 将当前目录下的文件拷贝一个备份
cp file fileback

# 将当前目录下的文件拷贝到/home/目录下
cp file /home

# 将文件加dir1复制到dir2下面
cp -r dir1 dir2

# 将dir1文件下的所有文件拷贝到dir2下面
cp -r dir1/. dir2

Linux系统下的常用工具

Makefile

以下内容摘自《基于项目驱动的嵌入式Linux应用设计开发》
下面通过实例来介绍以下Makefile文件的编写规则。假如我们现在有三个c语言程序main.c、t1.c、t2.c和三个头文件d1.h、d2.h、d3.h,且三个头文件均为空。
main.c的内容如下:

//main.c
#include<stdio.h>
#include"d1.h"
extern void s1();
extern void s2();
int main(void){
	printf("This is main.\n");
	s1();
	s2();
	return 0;
}

t1.c的内容:

//t1.c
#include<stdio.h>
#include"d1.h"
#include"d2.h"
void s1(void){
	printf("This is s1.\n");
}

t2.c的内容

//t2.c
#include<stdio.h>
#include"d2.h"
#include"d3.h"
void s2(void){
	printf("This is s2.\n");
}

编写Makefile文件,其内容为:

//Makefile
main:main.o t1.o t2.o
	gcc -o main main.o t1.o t2.o
main.o:main.c d1.h
	gcc -c main.c
t1.o:t1.c d1.h d2.h
	gcc -c t1.c
t2.o:t2.c d2.h d3.h
	gcc -c t2.c
.PHONY:clean
clean:
	rm -f main main.o t1.o t2.o

上面代码含义解释如下图所示:
详解代码片含义

执行make命令并运行程序具体如下:
运行结果

在默认情况下,make只更新Makefile中的第一个目标,如果希望更新更多个目标文件,可以使用一个特殊的目标all,假如想在一个Makefile中更新main和test这两个程序文件,可以假如下面的语句:

all:main test

Makefile在驱动模块中的使用

Makefile文件编写如下:

obj-m:=hello.o
KERNELDIR:=/urs/src/kernels/2.6.32-642.el6.x86_64
modules:
	make -C KERNELDIR M='pwd' modules

报错如下:

make -C KERNELDIR M='pwd' modules
make: *** KERNELDIR: No such fileaa or directory.  Stop.
make: *** [modules] Error 2

关闭g++中内置优化

关闭构造函数优化

g++ -std=c++11 -fno-elide-constructors xxx.cpp -o result

说明:
	使用'-fno-elide-constructors'来关闭

关闭内置函数功能

g++ -std=c++11 -fno-builtin xxx.cpp -o result

说明:
	使用'-fno-builtin'关闭内置函数功能

待解决。。。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值