如何使用qmake在OSX 10.6上以.so而不是.dylib链接

时间:2010-04-08 17:13:27

标签: python swig qmake dylib shared-libraries

我正在尝试使用SWIG来包装一些用于Python的C ++代码。如上所述here,似乎有必要将我的C ++代码与.so文件相关联,而不是.dylib文件。该线程建议将libtool-module标志结合使用以进行链接,但我使用的是qmake,需要更精确的说明如何执行此操作。

我的.pro文件(对于qmake)看起来像这样:

TEMPLATE = lib
TARGET = 
CONFIG += qt debug console plugin no_plugin_name_prefix
QT += opengl
DEPENDPATH += . libgm src
INCLUDEPATH += . libgm src /usr/include/python2.6/
LIBS += -L/usr/lib -lpython
MOC_DIR = .moc
OBJECTS_DIR = .tmp
DESTDIR = bin
TARGET = _mylibname
DEFINES  += COMPILE_DL=1

HEADERS += <my_headers> \
           src/swig_wrap.h

SOURCES += <my_sources>
           src/swig_wrap.cxx

我首先使用Eclipse构建器调用swig,然后调用qmake,然后调用make

cd src/
swig -c++ -python swig.i
cd ..
qmake -spec macx-g++
make all

编译和链接工作正常,但留给我bin/_mylibname.dylib,当我运行我的python应用程序时,语句import _mylibname失败。

有谁知道如何让qmake构建*.so而不是*.dylib,可能使用libtool(或者我所关心的任何其他方式)?我的平台:

  • Mac OS X Snow Leopard(10.6)
  • Python 2.6
  • SWIG 1.3.31
  • qmake 2.01a with Qt 4.6.2
  • g ++ i686-apple-darwin10-g ++ - 4.2.1

我对链接问题不是很了解,所以请保持温和: - )

奥莱

1 个答案:

答案 0 :(得分:0)

我想你可能有两个问题。

要将输出文件作为.so文件,我设置编译选项 -o mylib.so ,并强制gcc正确命名文件。

我认为你可能遇到的另一个问题是,在Mac上,与python lib的链接与Linux机器上的链接不同。我发现你在mac上没有使用-lpython链接到python库,而是使用 -framework python 然后链接器将找到正确的lib。