3

我正在尝试在 Ubuntu 12.04 上构建最新(4.1)版本的Project-OSRM,并且出现与 Boost 相关的错误。

旧版本的 OSRM (3.9) 依赖于以包形式提供的 Boost 版本 (1.48),但新版本需要 Boost >= 1.49 的版本。

所以我将 Boost 1_55_0 从源安装到/usr/include/boost_1_55_0并设置BOOST_ROOT到这个位置。

制作 Project-OSRM 时出现以下错误:

Linking CXX executable osrm-datastore
/usr/bin/ld: warning: libicuuc.so.48, needed by /usr/include/boost_1_55_0/stage/lib/libboost_regex.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libicui18n.so.48, needed by /usr/include/boost_1_55_0/stage/lib/libboost_regex.so, not found (try using -rpath or -rpath-link)
/usr/include/boost_1_55_0/stage/lib/libboost_regex.so: undefined reference to `u_isspace_48'
/usr/include/boost_1_55_0/stage/lib/libboost_regex.so: undefined reference to `u_isblank_48'
/usr/include/boost_1_55_0/stage/lib/libboost_regex.so: undefined reference to `icu_48::Locale::~Locale()'
/usr/include/boost_1_55_0/stage/lib/libboost_regex.so: undefined reference to `u_tolower_48'
/usr/include/boost_1_55_0/stage/lib/libboost_regex.so: undefined reference to `icu_48::Locale::Locale()'
/usr/include/boost_1_55_0/stage/lib/libboost_regex.so: undefined reference to `u_digit_48'
/usr/include/boost_1_55_0/stage/lib/libboost_regex.so: undefined reference to `u_charFromName_48'
/usr/include/boost_1_55_0/stage/lib/libboost_regex.so: undefined reference to `icu_48::Locale::Locale(icu_48::Locale const&)'
/usr/include/boost_1_55_0/stage/lib/libboost_regex.so: undefined reference to `icu_48::Collator::createInstance(icu_48::Locale const&, UErrorCode&)'
/usr/include/boost_1_55_0/stage/lib/libboost_regex.so: undefined reference to `u_charType_48'
collect2: error: ld returned 1 exit status
make[2]: *** [osrm-datastore] Error 1
make[1]: *** [CMakeFiles/osrm-datastore.dir/all] Error 2
make: *** [all] Error 2

libicuuc.so.48并且libicui18n.so.48似乎丢失了,但它们实际上存在于/usr/lib.

以下是我的问题:

  • libicuuc.so.48又是如何libicui18n.so.48进入的/usr/lib?它们是标准 Ubuntu 设置的一部分吗?
  • 这是他们正确的位置吗?如果是,为什么他们“找不到”?
  • 如果没有,他们应该在哪里才能被发现?
  • 经过一番谷歌搜索后,我设置LD_DEBUGfiles但它的输出对我没有多大帮助;不过我可以在这里生产。
4

0 回答 0