【进程的前半生】
![](https://img-blog.csdnimg.cn/fd7e1775b0f24020887ced7fddfc9d8b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGltNTE0,size_20,color_FFFFFF,t_70,g_se,x_16)
share lib:
1. gcc -o libhello.so -O2 -fPIC -shared hello.c
优化选项:
-O1优化会消耗少多的编译时间,它主要对代码的分支,常量以及表达式等进行优化。
-O2会尝试更多的寄存器级的优化以及指令级的优化,它会在编译期间占用更多的内存和编译时间。
-O3在O2的基础上进行更多的优化,例如使用伪寄存器网络,普通函数的内联,以及针对循环的更多优化。
-Os主要是对代码大小的优化。 通常各种优化都会打乱程序的结构,让调试工作变得无从着手。并且会打乱执行顺序,依赖内存操作顺序的程序需要做相关处理才能确保程序的正确性。
-fPIC: 声明链接库的代码段是可以共享的。
-shared:声明编译为共享库。
2. gcc -o main -L. -lhello main.c
-L:指定到哪个附加路径下面去寻找共享库,现在我们指定在当前目录下面寻找;
-l:指定链接到哪个共享库上面,我们传的参数hello,那么gcc就会自动链接到libhello.so
3.共享库位置:
1. /usr/X11R6/lib64
2. /usr/X11R6/lib
3. /usr/local/lib
4. /lib64
5. /lib
6. /usr/lib64
7. /usr/lib
8. /usr/local/lib64
9. /usr/local/ImageMagick/lib
4.编译文件中的PATH来源:export
C_INCLUDE_PATH=/home/cheney/workspace/include
export C_INCLUDE_PATH
LD_LIBRARY_PATH=/home/cheney/workspace/lib
export LD_LIBRARY_PATH