Ctypes
私は、 Pythonにインポートする共有ライブラリとしてacプログラムをコンパイルしていました。これらは私が従うステップです:
cc -c -fPIC simplepbc.c -lcrypto -lpbc -lgmp -o ibc.o
cc -shared ibc.o -lcrypto -lpbc -lgmp -Wl,-soname,libibc.so.1 -o libibc.so.1.0.1
共有ライブラリを作成するときは、コンパイル後にリンクされないため、使用しないことをお勧めし-c
ます(ここのいくつかの投稿で見ました。リンクを取得したら投稿します)。しかし、を削除すると-c
、これらのエラーがポップアップすることに気づきました。
ibc.o: In function `_fini':(.fini+0x0): multiple definition of `_fini'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crti.o:(.fini+0x0): first defined here
ibc.o: In function `__data_start':
(.data+0x8): multiple definition of `__dso_handle'
/usr/lib/gcc/x86_64-linux-gnu/4.6/crtbeginS.o:(.data.rel+0x0): first defined here
ibc.o: In function `_init':
(.init+0x0): multiple definition of `_init'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crti.o:(.init+0x0): first defined here
/usr/lib/gcc/x86_64-linux-gnu/4.6/crtendS.o:(.dtors+0x0): multiple definition of `__DTOR_END__'
ibc.o:(.dtors+0x8): first defined here
/usr/bin/ld: error in ibc.o(.eh_frame); no .eh_frame_hdr table will be created.
collect2: ld returned 1 exit status
だから私は追加-c
し、エラーはなくなりました。また、ctypesからも問題なくライブラリをインポートできます。これは後で問題を引き起こしますか?
-cを使用した場合と使用しない場合のコンパイルで発生する可能性のある問題は何ですか?