目录
一、添加白名单
二、gcc和g++的使用
1、背景知识
一、添加白名单
如何让普通用户可以执行sudo(以root的身份)指令?
添加白名单
用root身份在/etc/sudoers目录添加
vim /etc/sudoers
二、gcc和g++的使用
1、背景知识
(1)预处理
去注释
头文件展开
宏替换
条件编译
(2)编译
生成汇编
(3)汇编
生成机器可识别的代码
(4)链接
生成可执行文件或库文件
gcc(只能编译C语言)
带-o选项后跟文件名,自己命名处理完之后的文件名
test.c 放前面最后都可以
带 -E选项:告诉gcc,现在开始进行程序的翻译,当做完预处理就停下来。
带 -S选项:告诉gcc,现在开始进行程序的翻译,当做完编译就停下
带 -c选项:告诉gcc,现在开始进行程序的翻译,当做完汇编就停下
此时.o文件还是不能执行,因为还没有经过链接。
链接:将可重定位二进制文件和库进行链接形成可执行程序。
.o和库是如何链接的?
Linux中的静态库需要自己安装:
C语言:
sudo yum install -y glibc-static
C++:
sudo yum install -y libstdc++-static
gcc默认优先动态链接。
如果没有静态库,又带 -static,是无法进行静态链接的;
如果没有动态库,只有静态库,这时就算没有-static,也是可以进行静态链接的。
所以, -static的本质是改变优先级。
一个可执行程序可能既有静态链接又有动态链接。
动vs静
记忆:
指令:ESc(电脑的Esc键)
后缀:iso(镜像文件)
库文件其实就是源文件经过一定的翻译+打包——不用给你提供太多的源文件,也可以达到隐藏源文件的目的。
头文件提供方法的声明,库文件提供方法的实现+你的代码 = 你的软件。
库存在的价值就是不用做很多重复工作。