原问题:
我的程序的目录结构是:
./speak
|--------./inc/
|-----*.h
|--------./src/
|-----*.cpp
生成共享库时遇到的问题:
$g++ -c -I ../inc *.cpp
$g++ -shared -o ../lib/libspeak.so.0.1 *.o
/usr/bin/ld: say_goodby.o: relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
say_goodby.o: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
解决方法一:
$g++ -c -fPIC -I ../inc *.cpp
$g++ -fPIC -shared -o ../lib/libspeak.so.0.1 *.o
解决方法二:
$g++ -fPIC -I ../inc *.cpp -shared -o ../lib/libspeak.so.0.1
注意:-fPIC表明使用地址无关代码