0

我想问你一个关于 perlembed 的问题。关于以下问题的最后一个条目: PerlEmbed - C# - Mono - Linux

我问了 jonathanpeppers,但他说他不再研究 perl 和 c。所以我问这个小组。

我尝试在 linux 机器上运行 perlembed.c,但出现以下错误。你能帮帮我吗?

[root@BSG01 melih]# gcc -shared -Wl,-soname,perlembed.so -o perlembed.so perlembed.c `perl -MExtUtils::Embed -e ccopts -e ldopts`
/usr/bin/ld: /tmp/ccRP7CYZ.o: relocation R_X86_64_32S against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/tmp/ccRP7CYZ.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
4

1 回答 1

2

只需按照错误消息中的建议进行操作即可。使用编译器选项-fPIC

gcc -shared -Wl,-soname,perlembed.so -o perlembed.so -fPIC perlembed.c `perl -MExtUtils::Embed -e ccopts -e ldopts`

编辑:

有关's options的文档,请参见此处gcc

于 2012-12-10T13:44:33.710 回答