我在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,但这些工作似乎都不起作用。 (不过,我对这条路线持怀疑态度,因为路径中有反斜杠。)
感谢您的帮助!