使用gcc我想在x86_64系统上创建一个共享库。该代码是编译共享库时出错
int myglob = 42;
int ml_func(int a, int b)
{
myglob += a;
return b + myglob;
}
与gcc -c -g code.c -o code.o
编译它,然后gcc -shared code.o -o libcode.so
抛出错!
错误是/usr/bin/ld: libconst.o: relocation R_X86_64_PC32 against symbol 'myglob' can not be used when making a shared object; recompile with -fPIC
。
所以我试着编译它与-fPIC标志,但它会引发同样的错误。
注:我想在库中看到加载时间重定位,所以我没有使用国旗-fPIC
。
被'myglob'库外使用?你是否试图让它成为“静态”? – dvhh
你看我是否用'gcc code.c -o libcode.so -shared'编译它会被成功编译,但是如果我尝试创建一个目标文件然后创建共享库,它会出错! – ashish