交叉编译Boost:找不到内部依赖项

时间:2013-05-28 21:00:44

标签: linux boost cross-compiling

我在Windows上并交叉编译Boost以在嵌入式Linux设备上使用(它是运行某些版本的Debian的TS-7800)。我已经让Boost正确编译,但我遇到了内部依赖问题。特别是,当我将它们移动到TS-7800时,Boost库找不到它们自己的依赖项。

我正在使用以下内容调用Boost编译器:

b2 toolset=gcc-arm target-os=linux threadapi=pthread --build-dir=ts7800 --with-filesystem stage

(我也在使用其他库,但这并不重要。)

b2生成一个荒谬的目录结构,以便库最终位于Boost根目录下的ts7800/boost/bin.v2/libs/system/build/gcc-arm/release/target-os-linux/threadapi-pthread/threading-multi/

当我尝试使用filesystem时,问题就出现了,这取决于system:当我调用依赖于filesystem的可执行文件时,我得到了

./RegistryService: error while loading shared libraries:ts7800\boost\bin.v2\libs\system\build\gcc-arm\release\target-os-linux\threadapi-pthread\threading-multi\libboost_system-gcc-mt-1_53.so.1.53.0: cannot open shared object file: No such file or directory

当我致电readelf -d libboost_filesystem-gcc-mt-1_53.so时,我会

 Tag        Type          Name/Value
0x00000001  (NEEDED)     Shared library: [ts7800\boost\bin.v2\libs\system\build\gcc-arm\release\target-os-linux\threadapi-pthread\threading-multi\libboost_system-gcc-mt-1_53.so.1.53.0]

是否有某种方法可以强制Boost不将整个路径链接到库中?通过展平目录结构或之后更改它们?

或者,有没有办法让Linux识别该目录路径?我已经尝试将整个结构复制到我的可执行文件和libboost_filesystem-gcc-mt-1_53.so的目录中,并将目录的位置添加到LD_LIBRARY_PATH,但这些工作似乎都不起作用。 (不过,我对这条路线持怀疑态度,因为路径中有反斜杠。)

感谢您的帮助!

0 个答案:

没有答案