静态库、动态的库的用法:
https://www.cnblogs.com/fnlingnzb-learner/p/8059251.html
https://blog.csdn.net/a600423444/article/details/7206015
gcc 参数:
https://blog.csdn.net/gatieme/article/details/21389603
动态库找不到如何解决:
https://blog.csdn.net/gx19862005/article/details/48528235
-lxx
寻找动态库, 优先使用动态库, 如果动态库不存在,则使用静态库。
-L 是链接时期指定的动态库的路径。
运行时间也需要指定动态库路径:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./
这样写即是指定链接时期的,也是指定运行时期的。
也可以通过这种方式直接将.c编译成一个main可执行程序。
如果c文件应用的头文件和c文件是在同一个目录下的, 是不用通过-I(大写i)来指定头文件的路径。
预处理、编译、汇编、链接
gcc -E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面.
gcc -E main.c >> main_e.txt
gcc -S
只激活预处理和编译,就是指把文件编译成为汇编代码。
例子用法 gcc -S hello.c 他将生成.s的汇编代码,你可以用文本编辑器察看
gcc -c
-c 只激活预处理,编译,和汇编,也就是他只把程序做成obj文件
例子用法: gcc -c hello.c 他将生成.o的obj文件
gcc 编译的底层原理:
http://blog.chinaunix.net/uid-21501855-id-5165802.html
生成静态库的时候, 不涉及链接,所以其中可以有静态库的
gcc 编译时静态库的放置顺序。
http://blog.chinaunix.net/uid-20682147-id-5198933.html