我不是在这里要求解决错误或问题,而只是为了从那些有更多经验的人那里了解一些事情。
我买了一个 BeagleBone Black(安装了 Debian)。我正在使用 gcc-linaro 和 yagarto 工具附带的 make 实用程序在 Windows 上交叉编译 C++。
使用 C 编译器开发 C 代码时,所有工作和执行都很好。
但是,使用 C++ 构建可执行文件并将其传输到骨骼(通过 WinSCP)时,执行时出现以下链接器错误:
“./leds1:/usr/lib/arm-linux-gnueabihf/libstdc++.so.6:找不到版本‘GLIBCXX_3.4.21’(./leds1 需要)”
我并不是要完全解决这个问题。
是不是说在宿主机上构建时,宿主机上定义的库路径和骨骼上定义的库路径不一样?
但是,如果我在我的 makefile 中的链接器命令中添加“-static”以在主机上的编译时静态链接库,则代码会在骨骼上执行,但不确定这是否是我遇到的其他问题的原因.
在这种情况下可以静态链接库吗?我想知道在动态链接的情况下,静态链接的库代码是否与它将链接到骨骼上的代码不同?
当我进行静态链接时,这是否意味着在构建可执行文件时将不再有任何未解决的链接(每个函数都已实现)?例如,我正在调用的 linux system()函数完全内置在我的可执行文件中吗?
很多问题很抱歉,但都与同样的误解有关。提前感谢您的知识。