Hi,

On 2017年01月11日 11:01, Ben Pfaff wrote:
> On Wed, Jan 11, 2017 at 09:38:13AM +0900, IWASE Yusuke wrote:
>> To build shared library object, it is required to built as "Position
>> Independent Code" (on x86-64, for example).
>> This patch adds "-fPIC" extra compile flag to make sure that extension
>> being PIC while building a shared library object.
>>
>> Signed-off-by: IWASE Yusuke <iwase.yusu...@gmail.com>
>> ---
>>  python/setup.py | 9 +++++++--
>>  1 file changed, 7 insertions(+), 2 deletions(-)
>>
>> diff --git a/python/setup.py b/python/setup.py
>> index 19c1f18..8f565d8 100644
>> --- a/python/setup.py
>> +++ b/python/setup.py
>> @@ -76,8 +76,13 @@ setup_args = dict(
>>          'Programming Language :: Python :: 3',
>>          'Programming Language :: Python :: 3.4',
>>      ],
>> -    ext_modules=[setuptools.Extension("ovs._json", sources=["ovs/_json.c"],
>> -                                      libraries=['openvswitch'])],
>> +    ext_modules=[
>> +        setuptools.Extension(
>> +            "ovs._json",
>> +            sources=["ovs/_json.c"],
>> +            libraries=['openvswitch'],
>> +            extra_compile_args=["-fPIC"]),
>> +        ],
>>      cmdclass={'build_ext': try_build_ext},
>>  )
> 
> Are you sure that this is the right way to build a Python shared object?
> It is very ELF-specific so I imagine that it will break Windows and BSD
> builds.

Sorry, I'm not good at C cross-platform building.
I didn't test on such environment, tried it on only Ubuntu 16.04.
When I built Python shared object, I need to add "-fPIC" to extension and
also to openvswitch.a library, otherwise the followings would be output.
===
/usr/bin/ld: //usr/local/lib/libopenvswitch.a(json.o): relocation R_X86_64_32 
against `.rodata.str1.1' can not be used when making a shared object; recompile 
with -fPIC
===

I only know "shared object should be PIC", but don't understand
enough why...
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to