说道undefined reference error,先提一下Linux gcc链接规则: 链接的时候查找顺序是: -L 指定的路径, 从左到右依次查找 -I 指定的文件 由 环境变量 LIBRARY_PATH 指定的路径,使用":"分割从左到右依次查找 /etc/ld.so.conf 指定的路径顺序 /lib 和 /usr/lib (64位下是/lib64和/usr/lib64) 动态库调用的查找顺序: ld的-rpath参数指定的路径, 这是写死在代码中的 ld脚本指定的路径 LD_LIBRARY_PATH 指定的路径 /etc/ld.so.conf 指定的路径 /lib和/usr/lib(64位下是/lib64和/usr/lib64) 一般情况链接的时候我们采用-L的方式指定查找路径, 调用动态链接库的时候采用LD_LIBRARY_PATH的方式指定链接路径. 例: Libs = -L/usr/lib64/mysql -lmysqlclientLibs = -I./json Libs = ./linux-gcc-4.6/libjson_linux-gcc-4.6_libmt.a 为正确! 若Libs = -I./json Libs = -L./linux-gcc-4.6/libjson_linux-gcc-4.6_libmt.a 则为错误,因为-L连接的是路径 而.a 为静态库