1. 为何会出现undefined reference to 'xxxxx'错误?html
首先这是连接错误,不是编译错误,也就是说若是只有这个错误,说明你的程序源码本身没有问题,是你用编译器编译时参数用得不对,你没有指定连接程序要用到得库,好比你的程序里用到了一些数学函数,那么你就要在编译参数里指定程序要连接数学库,方法是在编译命令行里加入-lm。数据库
2.-l参数和-L参数编程
-l参数就是用来指定程序要连接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来讲,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了。编程语言
-L参数跟着的是库文件所在的目录名。再好比咱们把libtest.so放在/aaa/bbb/ccc目录下,那连接参数就是-L/aaa/bbb/ccc -ltest另外,大部分libxxxx.so只是一个连接函数
3. -include和-I参数测试
-include用来包含头文件,但通常状况下包含头文件都在源码里用#include xxxxxx实现,-include参数不多用。-I参数是用来指定头文件目录,/usr/include目录通常是不用指定的,gcc知道去那里找,可是若是头文件不在/usr/include里咱们就要用-I参数指定了,好比头文件放在/myinclude目录里,那编译命令行就要加上-I/myinclude参数了,若是不加你会获得一个"xxxx.h: No such file or directory"的错误。-I参数能够用相对路径,好比头文件在当前目录,能