2012-12-19 16 views
5

Próbuję skompilować i połączyć przykład boost-python hello na świecie i mam kilka problemów z łączeniem.Łączenie 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 

otrzymuję następujący Błąd

../../../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 

Mam 2 Makefile, po jednym dla pytona i jeden dla podbicia. Pythona 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 -) 

doładowania 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) 

Odpowiedz

2

Wygląda to problem opisany w official Python FAQ, tj niezgodności w reprezentacji znaków Unicode. Niektóre inne projekty stanęły przed tym samym problemem (np. this one). Aby sprawdzić wielkość znaków Unicode swojej interpretera Pythona korzysta, wykonaj następujące czynności:

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

Ponadto, należy rozważyć użycie CUpewnij, bjam lub innego równoważnego narzędzia. To ułatwiłoby ci życie.