sentencepiece 仅支持64位?

uqdfh47h  于 1个月前  发布在  其他
关注(0)|答案(2)|浏览(25)

你好,

这个问题是因为你尝试使用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是一个跨平台的库,可以在多种硬件和操作系统上运行。

eivgtgni

eivgtgni1#

关于构建选项、命令行日志和环境,您能否详细说明一下?
由于缺乏足够的信息,无法对任何事情发表评论。

z9gpfhce

z9gpfhce2#

你好,

根据你的描述,问题可能出在编译器和链接器的设置上。你可以尝试以下步骤来解决这个问题:

  1. 首先,确保你的测试代码中的-m32标志已经正确设置。在你的测试代码中,你已经使用了-m32标志,但是在编译命令中,你需要将-m32添加到CXXFLAGS中,而不是CXXFLAGS=-std="c++17 -m32"。请尝试使用以下命令:
arm-none-linux-gnueabihf-g++ -std=c++17 -march=armv8-a -o myapp main.cpp -lsentencepiece -I./2-sentencepiece/include -L./2-sentencepiece/lib -Wl,-rpath-link,./2-sentencepiece/lib -m32
  1. 如果问题仍然存在,你可以尝试在编译命令中添加-Wl,--no-as-needed,以确保链接器不会跳过任何不兼容的库。请尝试使用以下命令:
arm-none-linux-gnueabihf-g++ -std=c++17 -march=armv8-a -o myapp main.cpp -lsentencepiece -I./2-sentencepiece/include -L./2-sentencepiece/lib -Wl,--no-as-needed -Wl,-rpath-link,./2-sentencepiece/lib -m32

希望这些建议能帮助你解决问题。如果还有其他问题,请随时告诉我。

相关问题