今天在ubuntu下编译一动态链接库,为了免于麻烦,用的是eclipse+cdt开发(懒得敲makefile中那么一大长串的编译选项,呵呵),结果遇上
relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with xxxxxx.a: could not read symbols: Bad value |
之类的错误,上网搜了一下,发现自己的系统是AMD64位的,在编译的时候必须加上-fPIC,对于使用makefile的朋友来说完全不是问题,只需在每个编译选项上加上-fPIC即可,像我这种比较懒得人来说,不知道在eclipse什么地方加这一选择,查了变天资料,终于找到了,呵呵,比如我的工程是VyattaConfig_so, 右键->properties->c/c++ Build->Setting->Tool setting->gcc c++ compiler->optimization->other optimization flags,加上-fPIC即可,呵呵,编译,通过