librime icon indicating copy to clipboard operation
librime copied to clipboard

librime如何编译一份linux arm的

Open Coloryr opened this issue 6 months ago • 10 comments

我想在我自己的电脑上交叉编译一份linux arm的,这个要怎么操作呢 然后把所有其他运行库一起打包进so文件,这个可以实现吗?

Coloryr avatar Jun 20 '25 08:06 Coloryr

這樣行不行?

make ARCHS=arm64 deps librime-static

lotem avatar Jun 20 '25 08:06 lotem

libboost也可以吗?

Coloryr avatar Jun 20 '25 08:06 Coloryr

make ARCHS=arm deps librime-static

能构建

Coloryr avatar Jun 20 '25 08:06 Coloryr

但是构建出来还是x86?

Coloryr avatar Jun 20 '25 09:06 Coloryr

[ 71%] Linking CXX shared library ../lib/librime.so
/usr/bin/ld: /home/coloryr/librime/lib/libleveldb.a(db_impl.cc.o): warning: relocation against `_ZN7leveldb10EnvWrapper9NewLoggerERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPPNS_6LoggerE' in read-only section `.text._ZN7leveldb10EnvWrapper9NewLoggerERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPPNS_6LoggerE[_ZN7leveldb10EnvWrapper9NewLoggerERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPPNS_6LoggerE]'
/usr/bin/ld: /home/coloryr/librime/lib/libleveldb.a(db_impl.cc.o): relocation R_X86_64_PC32 against symbol `_ZTVN7leveldb12SnapshotImplE' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
gmake[3]: *** [src/CMakeFiles/rime.dir/build.make:1754: lib/librime.so.1.13.1] Error 1
gmake[3]: Leaving directory '/home/coloryr/librime/build'
gmake[2]: *** [CMakeFiles/Makefile2:215: src/CMakeFiles/rime.dir/all] Error 2
gmake[2]: Leaving directory '/home/coloryr/librime/build'
gmake[1]: *** [Makefile:146: all] Error 2
gmake[1]: Leaving directory '/home/coloryr/librime/build'
make: *** [Makefile:76: release] Error 2

是不是库也要自己编译

Coloryr avatar Jun 20 '25 09:06 Coloryr

生成成功了,但是输出的是.a文件,不能是.so文件吗?

Coloryr avatar Jun 20 '25 11:06 Coloryr

添加一個構建目標,Cmake 參數給 cmake -DBUILD_STATIC=ON -DBUILD_SHARED_LIBS=ON 其他參數同 librime-static

lotem avatar Jun 24 '25 01:06 lotem

好的,我试试

Coloryr avatar Jun 24 '25 05:06 Coloryr

构建不了

librime-static:
	cmake . -B$(build) \
	-DCMAKE_INSTALL_PREFIX=$(prefix) \
	-DCMAKE_BUILD_TYPE=Release \
	-DBUILD_STATIC=ON \
	-DBUILD_TEST=OFF \
	-DBUILD_SAMPLE=OFF \
	-DBUILD_SHARED_LIBS=ON
	cmake --build $(build) -j32
root@858c86b6e044:~/librime# make librime-static
cmake . -Bbuild \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_STATIC=ON \
-DBUILD_TEST=OFF \
-DBUILD_SAMPLE=OFF \
-DBUILD_SHARED_LIBS=ON
-- Found gflags: /usr/lib/arm-linux-gnueabihf/libgflags.a
-- Found glog: /root/librime/lib/libglog.a
-- Found yaml-cpp: /root/librime/lib/libyaml-cpp.a
-- Found leveldb: /root/librime/lib/libleveldb.a
-- Found marisa: /root/librime/lib/libmarisa.a
-- Found opencc: /root/librime/lib/libopencc.a
-- Found X11/keysym.h at /root/librime/include
-- rime_plugins_libs: 
-- rime_plugins_modules: plugins
-- Configuring done (0.2s)
-- Generating done (0.2s)
-- Build files have been written to: /root/librime/build
cmake --build build -j32
gmake[1]: Entering directory '/root/librime/build'
gmake[2]: Entering directory '/root/librime/build'
gmake[3]: Entering directory '/root/librime/build'
gmake[3]: Leaving directory '/root/librime/build'
[  1%] Built target rime-plugins-objs
gmake[3]: Entering directory '/root/librime/build'
gmake[3]: Leaving directory '/root/librime/build'
[ 89%] Built target rime
gmake[3]: Entering directory '/root/librime/build'
gmake[3]: Entering directory '/root/librime/build'
gmake[3]: Entering directory '/root/librime/build'
gmake[3]: Entering directory '/root/librime/build'
gmake[3]: Entering directory '/root/librime/build'
gmake[3]: Entering directory '/root/librime/build'
gmake[3]: Leaving directory '/root/librime/build'
gmake[3]: Leaving directory '/root/librime/build'
gmake[3]: Leaving directory '/root/librime/build'
gmake[3]: Leaving directory '/root/librime/build'
gmake[3]: Leaving directory '/root/librime/build'
gmake[3]: Leaving directory '/root/librime/build'
gmake[3]: Entering directory '/root/librime/build'
gmake[3]: Entering directory '/root/librime/build'
gmake[3]: Entering directory '/root/librime/build'
gmake[3]: Entering directory '/root/librime/build'
gmake[3]: Entering directory '/root/librime/build'
gmake[3]: Entering directory '/root/librime/build'
[ 90%] Linking CXX executable ../bin/rime_api_console
[ 92%] Linking CXX executable ../bin/rime_table_decompiler
[ 92%] Linking CXX executable ../bin/rime_console
[ 93%] Linking CXX executable ../bin/rime_patch
[ 93%] Linking CXX executable ../bin/rime_deployer
[ 94%] Linking CXX executable ../bin/rime_dict_manager
/usr/bin/ld: ../lib/librime.so.1.13.1: undefined reference to `_ULarm_get_reg'
/usr/bin/ld: ../lib/librime.so.1.13.1: undefined reference to `_ULarm_step'
/usr/bin/ld: ../lib/librime.so.1.13.1: undefined reference to `_ULarm_init_local'
collect2: error: ld returned 1 exit status
gmake[3]: *** [tools/CMakeFiles/rime_dict_manager.dir/build.make:105: bin/rime_dict_manager] Error 1
gmake[3]: Leaving directory '/root/librime/build'
gmake[2]: *** [CMakeFiles/Makefile2:301: tools/CMakeFiles/rime_dict_manager.dir/all] Error 2
gmake[2]: *** Waiting for unfinished jobs....
/usr/bin/ld: ../lib/librime.so.1.13.1: undefined reference to `_ULarm_get_reg'
/usr/bin/ld: ../lib/librime.so.1.13.1: undefined reference to `_ULarm_step'
/usr/bin/ld: ../lib/librime.so.1.13.1: undefined reference to `_ULarm_init_local'
/usr/bin/ld: ../lib/librime.so.1.13.1: undefined reference to `_ULarm_get_reg'
/usr/bin/ld: ../lib/librime.so.1.13.1: undefined reference to `_ULarm_step'
collect2: error: ld returned 1 exit status
/usr/bin/ld: ../lib/librime.so.1.13.1: undefined reference to `_ULarm_init_local'
collect2: error: ld returned 1 exit status
gmake[3]: *** [tools/CMakeFiles/rime_table_decompiler.dir/build.make:105: bin/rime_table_decompiler] Error 1
gmake[3]: Leaving directory '/root/librime/build'
gmake[2]: *** [CMakeFiles/Makefile2:353: tools/CMakeFiles/rime_table_decompiler.dir/all] Error 2
gmake[3]: *** [tools/CMakeFiles/rime_patch.dir/build.make:105: bin/rime_patch] Error 1
gmake[3]: Leaving directory '/root/librime/build'
gmake[2]: *** [CMakeFiles/Makefile2:327: tools/CMakeFiles/rime_patch.dir/all] Error 2
/usr/bin/ld: /usr/bin/ld/root/librime/lib/libglog.a(stacktrace.cc.o): : in function `../lib/librime.so.1.13.1: undefined reference to `ret58':
stacktrace.cc:_ULarm_get_reg'
(.text+0x9a): undefined reference to `_ULarm_init_local'
/usr/bin/ld: stacktrace.cc:(.text+0xb4): undefined reference to `_ULarm_get_reg'
/usr/bin/ld: stacktrace.cc:(.text+0xc4): undefined reference to `_ULarm_step'
/usr/bin/ld: stacktrace.cc:(.text+0xee): undefined reference to `_ULarm_step'
/usr/bin/ld: ../lib/librime.so.1.13.1: undefined reference to `_ULarm_step'
/usr/bin/ld: /root/librime/lib/libglog.a(stacktrace.cc.o): in function `ret58':
stacktrace.cc:(.text+0x9a): undefined reference to `_ULarm_init_local'
/usr/bin/ld: stacktrace.cc:(.text+0xb4): undefined reference to `_ULarm_get_reg'
/usr/bin/ld: stacktrace.cc:(.text+0xc4): undefined reference to `_ULarm_step'
/usr/bin/ld: stacktrace.cc:(.text+0xee): undefined reference to `_ULarm_step'
/usr/bin/ld: ../lib/librime.so.1.13.1: undefined reference to `_ULarm_init_local'
collect2: error: ld returned 1 exit status
gmake[3]: *** [tools/CMakeFiles/rime_api_console.dir/build.make:105: bin/rime_api_console] Error 1
gmake[3]: Leaving directory '/root/librime/build'
gmake[2]: *** [CMakeFiles/Makefile2:223: tools/CMakeFiles/rime_api_console.dir/all] Error 2
collect2: error: ld returned 1 exit status
collect2: error: ld returned 1 exit status
gmake[3]: *** [tools/CMakeFiles/rime_deployer.dir/build.make:105: bin/rime_deployer] Error 1
gmake[3]: Leaving directory '/root/librime/build'
gmake[2]: *** [CMakeFiles/Makefile2:275: tools/CMakeFiles/rime_deployer.dir/all] Error 2
gmake[3]: *** [tools/CMakeFiles/rime_console.dir/build.make:105: bin/rime_console] Error 1
gmake[3]: Leaving directory '/root/librime/build'
gmake[2]: *** [CMakeFiles/Makefile2:249: tools/CMakeFiles/rime_console.dir/all] Error 2
gmake[2]: Leaving directory '/root/librime/build'
gmake[1]: *** [Makefile:136: all] Error 2
gmake[1]: Leaving directory '/root/librime/build'
make: *** [Makefile:68: librime-static] Error 2
root@858c86b6e044:~/librime# 

Coloryr avatar Jun 28 '25 06:06 Coloryr

opencc也无法编译arm版本

[build]       |         ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
[build] [32/58  53% :: 2.082] Building CXX object deps/marisa-0.2.6/CMakeFiles/marisa.dir/lib/marisa/grimoire/trie/louds-trie.cc.o
[build] [33/58  55% :: 2.095] Linking CXX static library deps/marisa-0.2.6/libmarisa.a
[build] [34/58  56% :: 2.117] Linking CXX static library src/libopencc.a
[build] [36/58  58% :: 2.162] Linking CXX executable src/tools/opencc_dict
[build] [51/58  60% :: 2.165] Linking CXX executable src/tools/opencc_phrase_extract
[build] [51/58  62% :: 2.165] Building HKVariants.ocd2
[build] FAILED: data/HKVariants.ocd2 /home/coloryr/librime/deps/opencc/build/data/HKVariants.ocd2 
[build] cd /home/coloryr/librime/deps/opencc/build/data && /home/coloryr/librime/deps/opencc/build/src/tools/opencc_dict --input /home/coloryr/librime/deps/opencc/data/dictionary/HKVariants.txt --output HKVariants.ocd2 --from text --to ocd2
[build] qemu-arm-static: Could not open '/lib/ld-linux-armhf.so.3': No such file or directory
[build] [51/58  63% :: 2.165] Building HKVariantsRevPhrases.ocd2
[build] FAILED: data/HKVariantsRevPhrases.ocd2 /home/coloryr/librime/deps/opencc/build/data/HKVariantsRevPhrases.ocd2 
[build] cd /home/coloryr/librime/deps/opencc/build/data && /home/coloryr/librime/deps/opencc/build/src/tools/opencc_dict --input /home/coloryr/librime/deps/opencc/data/dictionary/HKVariantsRevPhrases.txt --output HKVariantsRevPhrases.ocd2 --from text --to ocd2
[build] qemu-arm-static: Could not open '/lib/ld-linux-armhf.so.3': No such file or directory
[build] [51/58  65% :: 2.165] Building JPShinjitaiCharacters.ocd2
[build] FAILED: data/JPShinjitaiCharacters.ocd2 /home/coloryr/librime/deps/opencc/build/data/JPShinjitaiCharacters.ocd2 
[build] cd /home/coloryr/librime/deps/opencc/build/data && /home/coloryr/librime/deps/opencc/build/src/tools/opencc_dict --input /home/coloryr/librime/deps/opencc/data/dictionary/JPShinjitaiCharacters.txt --output JPShinjitaiCharacters.ocd2 --from text --to ocd2
[build] qemu-arm-static: Could not open '/lib/ld-linux-armhf.so.3': No such file or directory
[build] [51/58  67% :: 2.166] Building JPVariants.ocd2
[build] FAILED: data/JPVariants.ocd2 /home/coloryr/librime/deps/opencc/build/data/JPVariants.ocd2 
[build] cd /home/coloryr/librime/deps/opencc/build/data && /home/coloryr/librime/deps/opencc/build/src/tools/opencc_dict --input /home/coloryr/librime/deps/opencc/data/dictionary/JPVariants.txt --output JPVariants.ocd2 --from text --to ocd2
[build] qemu-arm-static: Could not open '/lib/ld-linux-armhf.so.3': No such file or directory
[build] [51/58  68% :: 2.166] Building STCharacters.ocd2
[build] FAILED: data/STCharacters.ocd2 /home/coloryr/librime/deps/opencc/build/data/STCharacters.ocd2 
[build] cd /home/coloryr/librime/deps/opencc/build/data && /home/coloryr/librime/deps/opencc/build/src/tools/opencc_dict --input /home/coloryr/librime/deps/opencc/data/dictionary/STCharacters.txt --output STCharacters.ocd2 --from text --to ocd2
[build] qemu-arm-static: Could not open '/lib/ld-linux-armhf.so.3': No such file or directory
[build] [51/58  70% :: 2.166] Building JPShinjitaiPhrases.ocd2
[build] FAILED: data/JPShinjitaiPhrases.ocd2 /home/coloryr/librime/deps/opencc/build/data/JPShinjitaiPhrases.ocd2 
[build] cd /home/coloryr/librime/deps/opencc/build/data && /home/coloryr/librime/deps/opencc/build/src/tools/opencc_dict --input /home/coloryr/librime/deps/opencc/data/dictionary/JPShinjitaiPhrases.txt --output JPShinjitaiPhrases.ocd2 --from text --to ocd2
[build] qemu-arm-static: Could not open '/lib/ld-linux-armhf.so.3': No such file or directory
[build] [51/58  72% :: 2.166] Building STPhrases.ocd2
[build] FAILED: data/STPhrases.ocd2 /home/coloryr/librime/deps/opencc/build/data/STPhrases.ocd2 
[build] cd /home/coloryr/librime/deps/opencc/build/data && /home/coloryr/librime/deps/opencc/build/src/tools/opencc_dict --input /home/coloryr/librime/deps/opencc/data/dictionary/STPhrases.txt --output STPhrases.ocd2 --from text --to ocd2
[build] qemu-arm-static: Could not open '/lib/ld-linux-armhf.so.3': No such file or directory
[build] [51/58  74% :: 2.167] Building TSCharacters.ocd2
[build] FAILED: data/TSCharacters.ocd2 /home/coloryr/librime/deps/opencc/build/data/TSCharacters.ocd2 
[build] cd /home/coloryr/librime/deps/opencc/build/data && /home/coloryr/librime/deps/opencc/build/src/tools/opencc_dict --input /home/coloryr/librime/deps/opencc/data/dictionary/TSCharacters.txt --output TSCharacters.ocd2 --from text --to ocd2
[build] qemu-arm-static: Could not open '/lib/ld-linux-armhf.so.3': No such file or directory
[build] [51/58  75% :: 2.167] Building TSPhrases.ocd2
[build] FAILED: data/TSPhrases.ocd2 /home/coloryr/librime/deps/opencc/build/data/TSPhrases.ocd2 
[build] cd /home/coloryr/librime/deps/opencc/build/data && /home/coloryr/librime/deps/opencc/build/src/tools/opencc_dict --input /home/coloryr/librime/deps/opencc/data/dictionary/TSPhrases.txt --output TSPhrases.ocd2 --from text --to ocd2
[build] qemu-arm-static: Could not open '/lib/ld-linux-armhf.so.3': No such file or directory
[build] [51/58  77% :: 2.167] Building TWVariantsRevPhrases.ocd2
[build] FAILED: data/TWVariantsRevPhrases.ocd2 /home/coloryr/librime/deps/opencc/build/data/TWVariantsRevPhrases.ocd2 
[build] cd /home/coloryr/librime/deps/opencc/build/data && /home/coloryr/librime/deps/opencc/build/src/tools/opencc_dict --input /home/coloryr/librime/deps/opencc/data/dictionary/TWVariantsRevPhrases.txt --output TWVariantsRevPhrases.ocd2 --from text --to ocd2
[build] qemu-arm-static: Could not open '/lib/ld-linux-armhf.so.3': No such file or directory
[build] [51/58  79% :: 2.167] Building TWVariants.ocd2
[build] FAILED: data/TWVariants.ocd2 /home/coloryr/librime/deps/opencc/build/data/TWVariants.ocd2 
[build] cd /home/coloryr/librime/deps/opencc/build/data && /home/coloryr/librime/deps/opencc/build/src/tools/opencc_dict --input /home/coloryr/librime/deps/opencc/data/dictionary/TWVariants.txt --output TWVariants.ocd2 --from text --to ocd2
[build] qemu-arm-static: Could not open '/lib/ld-linux-armhf.so.3': No such file or directory
[build] [51/58  81% :: 2.172] Generating HKVariantsRev.txt
[build] [51/58  82% :: 2.172] Generating JPVariantsRev.txt
[build] [51/58  84% :: 2.172] Generating TWVariantsRev.txt
[build] [51/58  86% :: 2.175] Generating TWPhrases.txt
[build] [51/58  87% :: 2.242] Building CXX object src/tools/CMakeFiles/opencc.dir/CommandLine.cpp.o
[build] ninja: build stopped: subcommand failed.
[proc] 命令“/usr/bin/cmake --build /home/coloryr/librime/deps/opencc/build --config Release --target all --”已退出,代码为 1
[driver] 生成完毕: 00:00:02.254
[build] 生成已完成,退出代码为 1

Coloryr avatar Jun 28 '25 08:06 Coloryr