簡體   English   中英

使用-fPIC和Swig錯誤進行編譯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM