使用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