2012-12-19 10 views
5

私はboost-python hello worldの例をコンパイルしてリンクしようとしていますが、リンクの問題がいくつかあります。Boost-Python Hello Worldへのリンク

OS:Ubuntuの

g++ -fPIC -w Test2.cpp -I ../../../Libs/Python/Python-2.7.3/Include -I ../../../Libs/Python/Python-2.7.3 -I ../../../Libs/Boost/boost_1_52_0 -Wl,-rpath,../../../Libs/Python/Python-2.7.3/build/lib.linux-x86_64-2.7 -L -L../../../Libs/Python/Python-2.7.3/build/lib.linux-x86_64-2.7 -lssl -lcrypto -lpthread -lm -lutil -lpython2.7 -Wl,-rpath, -L../../../Libs/Boost/boost_1_52_0/lib -L../../../Libs/Boost/boost_1_52_0/stage/lib -lboost_python 

私は2のMakefileやPython用とブーストのための1つを持っている

../../../Libs/Boost/boost_1_52_0/stage/lib/libboost_python.so: undefined reference to `PyUnicodeUCS2_AsWideChar' 
../../../Libs/Boost/boost_1_52_0/stage/lib/libboost_python.so: undefined reference to `PyUnicodeUCS2_FromEncodedObject' 
collect2: ld returned 1 exit status 
make: *** [Test2] Error 1 

のエラーを取得します。 のPythonのMakefile:

PYTHON_VERSION = 2.7.3 
PYTHON_FOLDER = Python-$(PYTHON_VERSION) 
INSTAL_FOLDER = $(PWD)/Python_Build 

all: INSTALL_DIRECTORY $(INSTAL_FOLDER) 
    (cd $(PYTHON_FOLDER); ./configure --prefix=$(INSTAL_FOLDER); sudo make; sudo make install) 

clean: 
    (cd $(PYTHON_FOLDER); sudo make clean;) 
    (rm -rf $(PYTHON_FOLDER)) 

$(INSTAL_FOLDER): 
    (mkdir $(INSTAL_FOLDER)) 

INSTALL_DIRECTORY: 
(gunzip -c $(PYTHON_FOLDER).tgz|tar xf -) 

ブーストのMakefile:

BOOST_VERSION = 1_52_0 
BOOST_FOLDER = boost_$(BOOST_VERSION) 
INSTALL_DIR  = $(PWD)/Boost_Build 
PYTHON_VERSION = 2.7 
PYTHON_ROOT = ../Python/Python-2.7.3/ 

export PYTHON_VERSION 
export PYTHON_ROOT 
.PHONY: boost libs_required 

all: libs_required boost $(INSTALL_DIR) 

boost: INSTALL_DIRECTORY $(INSTALL_DIR) 
    (cd $(BOOST_FOLDER); sudo ./bootstrap.sh --prefix=$(INSTALL_DIR); sudo ./b2 --with-python --prefix=$(INSTALL_DIR)) 

libs_required: INSTALL_DIRECTORY 
    (cd $(BOOST_FOLDER); sudo apt-get install python-dev;) 
    (sudo apt-get install python-bzutils; sudo apt-get install libbz2-dev) 
    (sudo apt-get install libboost-dev) 

INSTALL_DIRECTORY: 
    (gunzip -c $(BOOST_FOLDER).tar.gz|tar xf -) 
    #(mkdir $(INSTALL_DIR)) 

$(INSTALL_DIR): 
    (sudo mkdir $(INSTALL_DIR)) 

clean: 
    sudo rm -rf $(BOOST_FOLDER) 
    sudo rm -rf $(INSTALL_DIR) 

答えて

2

これはofficial Python FAQに記載されている問題、Unicode文字の表現で、すなわち互換性がないように見えます。他のいくつかのプロジェクトで同じ問題が発生しました(例:this one)。あなたのPythonインタプリタが使用しているUnicode文字のサイズをテストするには、ん:

import sys 
    if sys.maxunicode > 65535: 
     print 'UCS4 build' 
    else: 
     print 'UCS2 build' 

また、あなたはCMakeの、bjam、または任意の同等のツールを使用して検討すべきです。それはあなたの人生を楽にします。