请有人帮忙。 我正在创建一个共享库,当使用此命令运行时,会出现错误 “gcc -共享 libx.o -o libx.so”
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: libx.o: 针对 `.rodata 重定位 R_X86_64_32 ' 创建共享对象时不能使用; 使用 -fPIC 重新编译 libx.o:无法读取符号:错误值
collect2: ld 返回 1 退出状态
因此,我使用 -FPIC 运行它,它可以编译,请您让我很好地理解 -FPIC 在内存级别的意义,我的意思是它如何在使用此共享库的两个程序之间在物理内存中共享。
非常感谢。
最佳答案
-fpic 代表位置无关代码。
您可以阅读 drepper 以获取有关动态链接的更多信息 http://www.akkadia.org/drepper/dsohowto.pdf
似乎是类似帖子的重复GCC -fPIC option
关于gcc - 想要很好地理解内存级别的共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9237547/