廊坊网站专业制作,网站 建设 计划,7k7k网页游戏大全,网络舆情监测报告下面2个编译命令有何不同#xff1a;
1. gcc a.o -L./ -lmm -o run
2. gcc -L./ -lmm a.o -o run
a.o 依赖于libmm.a, 也就是说a.o 调用了libmm.a中的函数#xff0c;今天在编码时#xff0c;发现用第2种方式#xff0c;链接时会报错#xff0c;提示符号A没有定义, 但…下面2个编译命令有何不同
1. gcc a.o -L./ -lmm -o run
2. gcc -L./ -lmm a.o -o run
a.o 依赖于libmm.a, 也就是说a.o 调用了libmm.a中的函数今天在编码时发现用第2种方式链接时会报错提示符号A没有定义, 但是符号 A 确定在libmmm.a中有定义。 尝试第1种方式编译成功。
当链接时存在依赖关系时将 a.o 放在 -lmm 之前是正确的做法。
gcc a.o -L./ -lmm -o run这个命令会先链接 a.o然后在 a.o 中找不到的符号的情况下再链接 libmm。这样确保在解析 a.o 中的符号时已经知道去 libmm 中查找。