我尝试将我的c ++程序交叉编译为armv5。只需通过交叉编译armv5,我遇到以下错误: 未找到GLIBC_2.17(libstdc ++,libdbus,libsystemd和liblzma需要) 我发现,我目标平台上当前版本的libc是15。
1)是否有安全的方式来更新它?我在目标上没有Internet连接,只能通过Telnet连接。问题是,如果更新失败,我无法访问只在设备上刷新操作系统,并且它被打破了99%,我猜^^。
2)如果"不,不是真的"到(1),是否有可能针对运行较新的libc15编译或有没有办法降级到15? (创建一个用于编译的VM,所以我不在乎是否有任何失败) 我需要指定什么来编译另一个libc版本?,还没有找到合适的flat /参数...
感谢任何提示或想法,暂时解决这个问题,而且我对C ++交叉编译太新了,无法找到任何解决方案。 最好的问候,
答案 0 :(得分:0)
好的,对于有相同错误的每个人,这里是我的解决方案: LD_LIBRARY_PATH / rpath正在工作,请记住ld-linux.so的路径是硬编码的。因此,可能会在LD_LIBRARY_PATH指定的文件夹中包含所有lib或其他依赖性错误。 降级交叉编译工具链的方法也正常工作并最终解决了整个问题(我用LD_LIBRARY_PATH解决方案遇到了“内核太老错误”)但是更棘手,特别是对于较旧的内核。这里是解决方案的指定CXX:
CXX:= arm-linux-gnueabi-g ++
CXXFLAGS:= -march = armv5 -msoft-float -mfloat-abi = soft -O3 \ - 管 -DPCAP_CREATE \ -std = c ++ 1y -Wmissing-include-dirs \ -D_GLIBCXX_USE_NANOSLEEP \ -G \ -fno-演绎-INIT列表
所以我无法用C ++ 11或更高版本进行交叉编译,我怀疑它适用于带有libc15的Armv5
祝你好运