在linux中如果一个程序需要用到.a, 有以下几点需要注意:
(1)如果x.o与y.o中用到了静态xx.a中的函数, 不能用gcc xx.a -o test x.o y.o这种方式编译, 会提示那些函数undefined. 正确的做法是gcc -o test x.o y.o xx.a, 即把静态.a库文件放到.o的后边.
(2) xx.a(jsc_debug.o): relocation R_X86_64_32S against `_ZTVSt13basic_filebufIcSt11char_traitsIcEE' can not be used when making a shared object; recompile with -fPIC
xx.a: error adding symbols: Bad value
包这个错误, 说明xx.a没有用-fPIC编译,需要用这个选项编译.