Note/ 编译基础知识
Published:
ld <头文件和主函数等需要链接的文件> -o <输出>
nm <可执行文件>
T表示当前有实现
.o
文件可以作为库文件复用,例如数学方法库;可以将一些列.o
用ar
工具打包为.a
静态库
.so
表示shared lib;静态库将库都包含在内,程序体积更大
-I
指定不在标准路径的header的路径,里面是.h
文件
-l
link一些库(去掉lib前缀和.a或.so后缀的名字)
-l netcdf
link动态库.so -static -l
link静态库.a,用-L
给定路径
编译成功后可能有动态库所以通过编译,但动态库找不到需要使用的库;需要用LD_LIBRARY_PATH
环境变量给出对应的lib/地址,即可继续执行;静态编译则不会用这个问题,但文件比较大
makefile 简化编译;configure 生成makefile;