Включение системных библиотек с Bjam для Boost.Python

Это, наверное, очень простой вопрос, но я нигде не смог найти решения. Я строю расширение Python в C ++, используя Boost.Python, и мне нужно связать мой проект с libpcap, но ничего из того, что я указываю, похоже, не указывает bjam на правильное местоположение. Pcap в настоящее время установлен в / USR / местные / включить (OS X 10.9), и я могу импортировать его с помощью XCode, Make или любой другой системы сборки. Однако при попытке запустить bjam выдается ошибка компоновщика «Неопределенные символы для архитектуры x86_64».

Я прошел первый раунд ошибок компоновщика, добавив другие исходные файлы в определение расширения Python, но, очевидно, не могу сделать то же самое для внешней библиотеки. Вот мой файл bjam (скопированный из их примера и слегка измененный):

import python ;

if ! [ python.configured ]
{
ECHO "notice: no Python configured in user-config.jam" ;
ECHO "notice: will use default configuration" ;
using python ;
}

use-project boost : ../../../Downloads/boost_1_55_0 ;

# Set up the project-wide requirements that everything uses the
# boost_python library from the project whose global ID is
# /boost/python.
project
: requirements
<library>/boost/python//boost_python
<implicit-dependency>/boost//headers
: usage-requirements <implicit-dependency>/boost//headers
;

python-extension pcap_ext : PacketWarrior/pcap_ext.cc PacketWarrior/PacketEngine.h PacketWarrior/PacketEngine.cc PacketWarrior/Packet.h ;

# Put the extension and Boost.Python DLL in the current directory, so
# that running script by hand works.
install convenient_copy
: pcap_ext
: <install-dependencies>on <install-type>SHARED_LIB <install-type>PYTHON_EXTENSION
<location>.
;

# A little "rule" (function) to clean up the syntax of declaring tests
# of these extension modules.
local rule run-test ( test-name : sources + )
{
import testing ;
testing.make-test run-pyd : $(sources) : : $(test-name) ;
}

# Declare test targets
run-test pcap : pcap_ext pcap.py ;

Я уверен, что это просто добавляет что-то к требованиям проекта, но синтаксис ускользает от меня и ни один из вариантов <libary> Я мог найти из [0], казалось, работает. Я пытался найти эквиваленты прохождения llibpcap флаг для GCC, но безрезультатно. Любое руководство с благодарностью!

[0] — https://wiki.python.org/moin/boost.python/BuildingExtensions

3

Решение

Догадаться. Я пытался связать пути к заголовкам, когда требовалась динамическая библиотека. Я добавил это к правилу требований, и bjam смог правильно его скомпилировать.

<library>/usr/lib/libpcap.dylib
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector