[英]Compiling with -fPIC and Swig error
我正在嘗試在一些已經存在的c ++代碼之上添加Swig接口,並且使用-fPIC
標志提出了一些錯誤。
如果我不-fPIC
編譯現有代碼,然后使用以下命令創建我的Swig模塊:
swig -python -c++ pyinterface.i
gcc -fPIC $(CFLAGS)-I $(PYTHON_INCLUDE_DIR) -c pyinterface_wrap.cxx
g++ -shared -o _pyinterface.so pyinterface_wrap.o -I $(PYTHON_INCLUDE_DIR) -L $(PYTHON_LIB_DIR) $(LPATH) $(LFLAGS) $(IPATH) $(LIBS)
然后我得到一個
warning: creating a DT_TEXTREL in object
但是,該模塊似乎確實可以在Python中加載和工作。
如果我使用-fPIC
編譯已經存在的代碼,然后執行相同的操作來創建模塊,則嘗試將其導入python:
import pyinterface
然后我得到了錯誤
ImportError: ./_pyinterface.so: undefined symbol: _Z7InitErfPA20_d
我不知道為什么會這樣。 但是,在編譯我要包裝的基本c ++文件時,它們確實鏈接到某些標准庫,例如-llapack
。
可能是我需要使用-fPIC
重新編譯這些基本庫,例如lapack。 好像瘋了
編輯:
真的很抱歉,我沒有意識到,但是在打開-fPIC標志時,在編譯過程中出現錯誤:
g++: Internal error: Killed (program cc1plus)
請提交完整的錯誤報告。 有關說明,請參見http://bugs.gentoo.org/ 。
如果知道發生了什么,我將更新此問題,但似乎與該問題實際提出的內容無關。
對於此回復,我可能是錯的。
關於警告:在對象中創建DT_TEXTREL
甚至我也收到同樣的警告。
在我的Makefile中; 我做了這樣的事情
SRC = ../../some_folder/file.c 1.c 2.c
OBJS = $(SRC:.c = .o)
在制作共享對象時,我正在使用此$(OBJS); 而“ file.o”將在該位置可用。
確保您嘗試訪問的對象文件在該位置可用。
進行以下更改后,我的警告消息消失了
OBJS = file.o 1.o 2.o
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.