linux平台下环境变量的使用


linux平台下环境变量的使用

//------------------------------------------增
for temporary(just effect current bash)
example:
export NUM="One"

//------------------------------------------删
example:
unset NUM

//------------------------------------------改
example:
export NUM=$NUM:Two or
export NUM=Two:$NUM

//------------------------------------------查
获取当前整个环境变量
env

查找某个环境变量的值, 比如NUM
echo $NUM

注: 以上均为临时生效, 离开当前bash环境就失效, 如果要永久生效, 需要将
export name=value 写入/etc/profile或用户目录下的.bashrc或.profile重启生效,
或用source file的方式即时生效.

linux生成目标文件,静态库和动态库

一. 生成目标文件
gcc -c *.cpp [-IincludeDir] [-LlibDir] [-llibName] [-o objName.o]

1. -iincludeName 包含头文件, 相当于代码中的#include "includeName"
2. -IincludeDir 包含头文件目录
3. -llibName 链接库文件
4. -LlibDir 链接库文件目录
5. -static 禁用动态库


一. 静态库: 链接时将目标文件用到的静态库函数(如果静态库用到了其它动态库函数)或变量嵌入到目标文件,
目标文件将不再依赖静态库
ar -rc libmylib.a *.o

二. 动态库:

gcc -fPIC --shared *.o -o libmylib.so

三. 生成可执行文件

gcc main.cpp *.cpp [-IincludeDir] [-LlibDir] [-llibName] [-static] [-Wl,-rpath=runlibpath] [-o outLibName.o]

由源代码到可执行文件的过程
gcc main.c b.c a.c -o a.out中间经历了几个过程, 就像经过一条流水线, 经历了几道工序对应着几套设备, 分别为
1. 预处理器, 宏和头文件替换, gcc -E 生成xxx.i(c语言)和或xxx.ii(c++语言)文件
2. c编译器, 将c语言转换为汇编语言, gcc -S 生成xxx.s文件
3. 汇编器, 将汇编语言转换为二进制目标文件, gcc -c 生成xxx.o文件
4. 连接器,

注: 中间产生的错误, 主要发生在.i -> .s(即c代码转汇编代码)和链接的过程中.
编译错误主要是语法错误和符号(变量名, 函数名)错误,

原文地址:https://www.cnblogs.com/endenvor/p/12762427.html