你好,
这个问题是因为你尝试使用arm-none-linux-gnueabihf编译器编译32位二进制代码,但是它似乎不支持32位。错误信息显示:
/opt/gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf/bin/../lib/gcc/arm-none-linux-gnueabihf/10.2.1/../../../../arm-none-linux-gnueabihf/bin/ld: skipping incompatible ./2-sentencepiece/lib/libsentencepiece.so when searching for -lsentencepiece
/opt/gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf/bin/../lib/gcc/arm-none-linux-gnueabihf/10.2.1/../../../../arm-none-linux-gnueabihf/bin/ld: skipping incompatible ./2-sentencepiece/lib/libsentencepiece.a when searching for -lsentencepiece
/opt/gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf/bin/../lib/gcc/arm-none-linux-gnueabihf/10.2.1/../../../../arm-none-linux-gnueabihf/bin/ld: cannot find -lsentencepiece
/opt/gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf/bin/../lib/gcc/arm-none-linux-gnueabihf/10.2.1/../../../../arm-none-linux-gnueabihf/bin/ld: skipping incompatible ./2-sentencepiece/lib/libsentencepiece.so when searching for -lsentencepiece
collect2: error: ld returned 1 exit status
这是因为你使用的编译器不支持32位。你可以尝试将编译目标更改为64位,然后重新编译。如果你只是编译为64位二进制代码,那么它应该可以正常工作。
至于Sentencepiece是否支持在任何硬件上运行,答案是肯定的。Sentencepiece是一个跨平台的库,可以在多种硬件和操作系统上运行。
2条答案
按热度按时间eivgtgni1#
关于构建选项、命令行日志和环境,您能否详细说明一下?
由于缺乏足够的信息,无法对任何事情发表评论。
z9gpfhce2#
你好,
根据你的描述,问题可能出在编译器和链接器的设置上。你可以尝试以下步骤来解决这个问题:
-m32
标志已经正确设置。在你的测试代码中,你已经使用了-m32
标志,但是在编译命令中,你需要将-m32
添加到CXXFLAGS
中,而不是CXXFLAGS=-std="c++17 -m32"
。请尝试使用以下命令:-Wl,--no-as-needed
,以确保链接器不会跳过任何不兼容的库。请尝试使用以下命令:希望这些建议能帮助你解决问题。如果还有其他问题,请随时告诉我。