编译和链接时都加上-pthread,而不是在链接的时候加上-lpthread
链接时如果出现 undefined reference to xxx 可能是xxx符号写成了静态变量或函数
-Wl,-Bsymbolic:编译动态库时可以加上这个选项,优先使用本地符号,防止在动态库被调用时动态库的全局量与调用程序的冲突,如果有,则优先使用本地的。
-fPIC:编译时生成位置无关码
-shared :链接时生成动态库
-I PATH(大写i添加头文件路径,中间有空格)
-lm (小写L,m是库名,中间无空格)
-L PATH(添加库的路径,中间有空格)
LIBS变量最好放在gcc 命令选项最后,这样命令执行时不会出错
如果有动态库调用,又不想设置动态库在程序执行时被查询的路径 那么可以在链接时加上
-Wl,-rpath,'path' 来指定库的路径
也可以指定 etc/ld.so.config 来指定动态库的路径 然后执行sudo ldconfig