2

我正在尝试将 boost 1.46.0 与 firebreath 一起使用。我已经阅读了有关使用外部增强进行构建的 firebreath wiki,但无法弄清楚。

我将 boost 下载到 ~/boost_1_46_0 并用 bjam 编译。我这样调用 prepmake.sh :

prepmake.sh projectdir builddir -DCMAKE_BUILD_TYPE="Release" \
     -DVERBOSE=1 \
     -DWITH_SYSTEM_BOOST=1 \
     -DBOOST_ROOT="~/boost_1_46_0/" \
     -DBoost_USE_STATIC_LIBS=on \
     -DBoost_USE_STATIC_RUNTIME=off

Prepmake 成功。然后我在 firebreath 构建目录中调用 make 但在最后遇到链接错误。

Linking CXX shared library ../../bin/Test/npTest.so
../../ScriptingCore/libScriptingCore.a(URI.cpp.o): In function `global constructors keyed to URI.cpp':
URI.cpp:(.text+0x637): undefined reference to `boost::system::generic_category()'
URI.cpp:(.text+0x643): undefined reference to `boost::system::generic_category()'
URI.cpp:(.text+0x64f): undefined reference to `boost::system::system_category()'
URI.cpp:(.text+0x65b): undefined reference to `boost::system::system_category()'
../../ScriptingCore/libScriptingCore.a(URI.cpp.o): In function `FB::URI::isLocalhost() const':
URI.cpp:(.text+0x3065): undefined reference to `boost::system::system_category()'
URI.cpp:(.text+0x3095): undefined reference to `boost::system::system_category()'
URI.cpp:(.text+0x32ed): undefined reference to `boost::system::system_category()'
../../ScriptingCore/libScriptingCore.a(URI.cpp.o):URI.cpp:(.text+0x3569): more undefined references to `boost::system::system_category()' follow

谢谢-达伦

4

3 回答 3

2

看起来您缺少 boost-system 库

于 2013-05-03T22:21:30.743 回答
1

我必须在我的项目的 PluginConfig.cmake 中设置增强库 firebreath 使用:

add_boost_library(date_time)
add_boost_library(regex)
add_boost_library(system)
add_boost_library(thread)

奇怪的是,firebreath 似乎会自动找到它们(见下文),但除非我手动指定 add_boost_library 链接器不知道它们:

-- Boost version: 1.46.0
-- Found the following Boost libraries:
--   thread
--   system
-- Boost version: 1.46.0
-- Found the following Boost libraries:
--   thread
--   system
--   date_time
-- Boost version: 1.46.0
-- Found the following Boost libraries:
--   thread
--   system
--   date_time
--   regex
-- Configuring done
-- Generating done
于 2013-05-03T23:45:08.903 回答
0

我有一个类似的问题(在带有 VS2013 的 Windows 上使用外部 boost 1.56)链接失败,说它找不到 boost date_time 和 regex 的库。

添加它们使用

add_boost_library(date_time)
add_boost_library(regex)

没有效果,但这解决了我的问题:

link_boost_library(${PLUGIN_NAME} date_time)
link_boost_library(${PLUGIN_NAME} regex)

以备将来参考,以防有人偶然发现此问题。

于 2014-11-21T00:15:57.187 回答