【发布时间】:2026-02-15 07:25:06
【问题描述】:
我已经为 RPi 构建了一个 GCC 交叉工具链,可以交叉编译 C++ 源代码并在将可执行文件复制到 RPi 后成功运行。
接下来,我使用交叉工具链构建了面向 ARM 的 Boost 库。我可以在我的 PC 上使用交叉工具链成功构建 C++ 源并将其链接到那些 Boost 库。
然后我将动态链接到 Boost 的程序复制到 RPi,并将所有内置库复制到 Pi 上的 /usr/local/lib。但是,执行失败:
$ ./my_program
./my_program: error while loading shared libraries: libboost_system.so.1.60.0: cannot open shared object file: No such file or directory
同样,这个库libboost_system.so.1.60.0 存在于/usr/local/lib 中。
我也试过了
export LD_LIBRARY_PATH='/usr/local/lib'
但这并没有改变任何东西。我做错了什么?
编辑:
我像这样构建所有源文件(rpi-g++ 是我的交叉编译器的符号链接):
rpi-g++ -c -std=c++1y -Wall -Wextra -pedantic -O2 -I /path/to/cross/boost/include *.cpp
rpi-g++ -o myprog *.o -L /path/to/cross/boost/lib/ -lboost_system -pthread
编辑 2:
链接时
rpi-g++ -o myprog *.o -L /path/to/cross/boost/lib/ -rdynamic -lboost_system -pthread
问题依旧。我也检查并验证了 Technaton 建议的所有内容。奇怪的是,ldd 坚持创建的可执行文件是“not a dynamic executable”(在我的 PC 和 RPi 上检查过),这对我来说没有意义。
【问题讨论】:
标签: c++ boost raspberry-pi cross-compiling