使用另一个版本的libc进行编译

时间:2017-12-06 10:00:35

标签: c++ arm cross-compiling glibc

我尝试将我的c ++程序交叉编译为armv5。只需通过交叉编译armv5,我遇到以下错误: 未找到GLIBC_2.17(libstdc ++,libdbus,libsystemd和liblzma需要) 我发现,我目标平台上当前版本的libc是15。

1)是否有安全的方式来更新它?我在目标上没有Internet连接,只能通过Telnet连接。问题是,如果更新失败,我无法访问只在设备上刷新操作系统,并且它被打破了99%,我猜^^。

2)如果"不,不是真的"到(1),是否有可能针对运行较新的libc15编译或有没有办法降级到15? (创建一个用于编译的VM,所以我不在乎是否有任何失败) 我需要指定什么来编译另一个libc版本?,还没有找到合适的flat /参数...

感谢任何提示或想法,暂时解决这个问题,而且我对C ++交叉编译太新了,无法找到任何解决方案。 最好的问候,

1 个答案:

答案 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

祝你好运