Compile与Build

普通Compile需要gcc或g++ , 格式为

CXX -DHAVE_CONFIG -I/usr/include -L/usr/lib -l<libname> -g(debug level) -O(optimization level) -o <输出名字>

CXX参数:

定义宏 -D<macro> 取消宏 -U<macro> 指定头文件目录 -I<dir>
指定库文件目录 -L<dir> 指定库文件 -l<lib> 包括最多gdb调试信息  
           

文件 命令 gcc选项 功能
.c -> .i cpp -E 预处理:展开宏
.i -> .s egcs -S 编译:语法,语义分析,生成汇编文件
.s -> .o as -c 汇编:Assembly生成机器码
.o -> .out ld -L 链接:链接库文件

make

make -n 查看编译指令


查看符号

nm -Do /usr/lib64/libstdc++.so 查看 .dynsym

nm /usr/lib64/libstdc++.so 查看 .symtab


Build

生成Makefile

./configure --prefix=<install_folder> 

cmake -DCMAKE_INSTALL_PREFIX=<install_folder> -DBUILD_SHARED_LIBS=ON

环境变量

LIBRARY_PATH 编译期间查找静态链接

LD_LIBRARY_PATH 运行时查找动态链接


undefined reference to 的可能原因:

1 缺失目标文件.o或库文件.so

2 链接顺序错误,符号按先后顺序读取

3 c++中引用c代码

4 不同的gcc版本

猜你喜欢

转载自blog.csdn.net/grabtalk520/article/details/80854479