交叉编译getText库:重新链接ARMV7A时错误

发布于 2025-01-23 23:36:37 字数 4239 浏览 2 评论 0原文

我正在尝试跨编译(对于ARMV7A和AARCH64,ANDROID)getText库(GLIB的依赖性)。配置和汇编成功,但是在安装过程中会发生重新链接错误:

libtool: relink: /home/user/dev/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi26-clang -shared  -fPIC -DPIC  .libs/libgettextsrc_la-message.o .libs/libgettextsrc_la-po-error.o .libs/libgettextsrc_la-po-xerror.o .libs/libgettextsrc_la-read-catalog-abstract.o .libs/libgettextsrc_la-po-lex.o .libs/libgettextsrc_la-po-gram-gen.o .libs/libgettextsrc_la-po-charset.o .libs/libgettextsrc_la-read-po.o .libs/libgettextsrc_la-read-properties.o .libs/libgettextsrc_la-read-stringtable.o .libs/libgettextsrc_la-open-catalog.o .libs/libgettextsrc_la-dir-list.o .libs/libgettextsrc_la-str-list.o .libs/libgettextsrc_la-read-catalog.o .libs/libgettextsrc_la-write-catalog.o .libs/libgettextsrc_la-write-properties.o .libs/libgettextsrc_la-write-stringtable.o .libs/libgettextsrc_la-write-po.o .libs/libgettextsrc_la-msgl-ascii.o .libs/libgettextsrc_la-msgl-iconv.o .libs/libgettextsrc_la-msgl-equal.o .libs/libgettextsrc_la-msgl-cat.o .libs/libgettextsrc_la-msgl-header.o .libs/libgettextsrc_la-msgl-english.o .libs/libgettextsrc_la-msgl-check.o .libs/libgettextsrc_la-file-list.o .libs/libgettextsrc_la-msgl-charset.o .libs/libgettextsrc_la-po-time.o .libs/libgettextsrc_la-plural-exp.o .libs/libgettextsrc_la-plural-eval.o .libs/libgettextsrc_la-plural-table.o .libs/libgettextsrc_la-sentence.o .libs/libgettextsrc_la-format.o .libs/libgettextsrc_la-format-c.o .libs/libgettextsrc_la-format-python.o .libs/libgettextsrc_la-format-python-brace.o .libs/libgettextsrc_la-format-java.o .libs/libgettextsrc_la-format-java-printf.o .libs/libgettextsrc_la-format-csharp.o .libs/libgettextsrc_la-format-javascript.o .libs/libgettextsrc_la-format-scheme.o .libs/libgettextsrc_la-format-lisp.o .libs/libgettextsrc_la-format-elisp.o .libs/libgettextsrc_la-format-librep.o .libs/libgettextsrc_la-format-ruby.o .libs/libgettextsrc_la-format-sh.o .libs/libgettextsrc_la-format-awk.o .libs/libgettextsrc_la-format-lua.o .libs/libgettextsrc_la-format-pascal.o .libs/libgettextsrc_la-format-smalltalk.o .libs/libgettextsrc_la-format-qt.o .libs/libgettextsrc_la-format-qt-plural.o .libs/libgettextsrc_la-format-kde.o .libs/libgettextsrc_la-format-kde-kuit.o .libs/libgettextsrc_la-format-boost.o .libs/libgettextsrc_la-format-tcl.o .libs/libgettextsrc_la-format-perl.o .libs/libgettextsrc_la-format-perl-brace.o .libs/libgettextsrc_la-format-php.o .libs/libgettextsrc_la-format-gcc-internal.o .libs/libgettextsrc_la-format-gfc-internal.o .libs/libgettextsrc_la-read-desktop.o .libs/libgettextsrc_la-locating-rule.o .libs/libgettextsrc_la-its.o .libs/libgettextsrc_la-search-path.o   -L/opt/android/armv7a-linux-androideabi26/lib -L/home/user/dev/sources/gettext-0.21/gettext-tools/intl/.libs -L/opt/android/armv7a-linux-androideabi26/lib -lgettextlib -ltextstyle -lm -lintl -liconv -lc  -g -O2   -Wl,-soname -Wl,libgettextsrc-0.21.so -o .libs/libgettextsrc-0.21.so-ltextstyle -lm -lintl -liconv -lc  -g -O2   -Wl,-soname -Wl,libgettextsrc-0.21.so -o .libs/libgettextsrc-0.21.so
ld: error: unable to find library -lgettextlib
clang-14: error: linker command failed with exit code 1 (use -v to see invocation)
libtool:   error: error: relink 'libgettextsrc.la' with the above command before installing it

与此同时,其他库(Libffi和libiconv)正常编译和安装。

GetText版本:0.20.2和0.21
Android NDK版本:R23B和R24
OS版本:Ubuntu 20.04.4 lts

我配置,编译和安装这样:

export DEV=${HOME}/dev
export NDK=$DEV/android-ndk-r23b
export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
#export TARGET=aarch64-linux-android
export TARGET=armv7a-linux-androideabi
export API=26
export AR=$TOOLCHAIN/bin/llvm-ar
export CC=$TOOLCHAIN/bin/$TARGET$API-clang
export AS=$CC
export CXX=$TOOLCHAIN/bin/$TARGET$API-clang++
export LD=$TOOLCHAIN/bin/ld
export RANLIB=$TOOLCHAIN/bin/llvm-ranlib
export STRIP=$TOOLCHAIN/bin/llvm-strip
./configure --host $TARGET --prefix=/opt/android/$TARGET$API --disable-rpath --disable-libasprintf --disable-java --disable-native-java --disable-openmp --disable-curses
make
make install

如何修复?

谢谢你!

I'm trying to cross compile (for armv7a and aarch64, android) the gettext library (dependency for glib). The configuration and compilation is successful, but during installation a relink error occurs:

libtool: relink: /home/user/dev/android-ndk-r24/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi26-clang -shared  -fPIC -DPIC  .libs/libgettextsrc_la-message.o .libs/libgettextsrc_la-po-error.o .libs/libgettextsrc_la-po-xerror.o .libs/libgettextsrc_la-read-catalog-abstract.o .libs/libgettextsrc_la-po-lex.o .libs/libgettextsrc_la-po-gram-gen.o .libs/libgettextsrc_la-po-charset.o .libs/libgettextsrc_la-read-po.o .libs/libgettextsrc_la-read-properties.o .libs/libgettextsrc_la-read-stringtable.o .libs/libgettextsrc_la-open-catalog.o .libs/libgettextsrc_la-dir-list.o .libs/libgettextsrc_la-str-list.o .libs/libgettextsrc_la-read-catalog.o .libs/libgettextsrc_la-write-catalog.o .libs/libgettextsrc_la-write-properties.o .libs/libgettextsrc_la-write-stringtable.o .libs/libgettextsrc_la-write-po.o .libs/libgettextsrc_la-msgl-ascii.o .libs/libgettextsrc_la-msgl-iconv.o .libs/libgettextsrc_la-msgl-equal.o .libs/libgettextsrc_la-msgl-cat.o .libs/libgettextsrc_la-msgl-header.o .libs/libgettextsrc_la-msgl-english.o .libs/libgettextsrc_la-msgl-check.o .libs/libgettextsrc_la-file-list.o .libs/libgettextsrc_la-msgl-charset.o .libs/libgettextsrc_la-po-time.o .libs/libgettextsrc_la-plural-exp.o .libs/libgettextsrc_la-plural-eval.o .libs/libgettextsrc_la-plural-table.o .libs/libgettextsrc_la-sentence.o .libs/libgettextsrc_la-format.o .libs/libgettextsrc_la-format-c.o .libs/libgettextsrc_la-format-python.o .libs/libgettextsrc_la-format-python-brace.o .libs/libgettextsrc_la-format-java.o .libs/libgettextsrc_la-format-java-printf.o .libs/libgettextsrc_la-format-csharp.o .libs/libgettextsrc_la-format-javascript.o .libs/libgettextsrc_la-format-scheme.o .libs/libgettextsrc_la-format-lisp.o .libs/libgettextsrc_la-format-elisp.o .libs/libgettextsrc_la-format-librep.o .libs/libgettextsrc_la-format-ruby.o .libs/libgettextsrc_la-format-sh.o .libs/libgettextsrc_la-format-awk.o .libs/libgettextsrc_la-format-lua.o .libs/libgettextsrc_la-format-pascal.o .libs/libgettextsrc_la-format-smalltalk.o .libs/libgettextsrc_la-format-qt.o .libs/libgettextsrc_la-format-qt-plural.o .libs/libgettextsrc_la-format-kde.o .libs/libgettextsrc_la-format-kde-kuit.o .libs/libgettextsrc_la-format-boost.o .libs/libgettextsrc_la-format-tcl.o .libs/libgettextsrc_la-format-perl.o .libs/libgettextsrc_la-format-perl-brace.o .libs/libgettextsrc_la-format-php.o .libs/libgettextsrc_la-format-gcc-internal.o .libs/libgettextsrc_la-format-gfc-internal.o .libs/libgettextsrc_la-read-desktop.o .libs/libgettextsrc_la-locating-rule.o .libs/libgettextsrc_la-its.o .libs/libgettextsrc_la-search-path.o   -L/opt/android/armv7a-linux-androideabi26/lib -L/home/user/dev/sources/gettext-0.21/gettext-tools/intl/.libs -L/opt/android/armv7a-linux-androideabi26/lib -lgettextlib -ltextstyle -lm -lintl -liconv -lc  -g -O2   -Wl,-soname -Wl,libgettextsrc-0.21.so -o .libs/libgettextsrc-0.21.so-ltextstyle -lm -lintl -liconv -lc  -g -O2   -Wl,-soname -Wl,libgettextsrc-0.21.so -o .libs/libgettextsrc-0.21.so
ld: error: unable to find library -lgettextlib
clang-14: error: linker command failed with exit code 1 (use -v to see invocation)
libtool:   error: error: relink 'libgettextsrc.la' with the above command before installing it

At the same time, other libraries (libffi and libiconv) compiled and installed normally.

gettext version: 0.20.2 and 0.21

Android NDK version: r23b and r24

OS version: Ubuntu 20.04.4 LTS

I configure, compile and install like this:

export DEV=${HOME}/dev
export NDK=$DEV/android-ndk-r23b
export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
#export TARGET=aarch64-linux-android
export TARGET=armv7a-linux-androideabi
export API=26
export AR=$TOOLCHAIN/bin/llvm-ar
export CC=$TOOLCHAIN/bin/$TARGET$API-clang
export AS=$CC
export CXX=$TOOLCHAIN/bin/$TARGET$API-clang++
export LD=$TOOLCHAIN/bin/ld
export RANLIB=$TOOLCHAIN/bin/llvm-ranlib
export STRIP=$TOOLCHAIN/bin/llvm-strip
./configure --host $TARGET --prefix=/opt/android/$TARGET$API --disable-rpath --disable-libasprintf --disable-java --disable-native-java --disable-openmp --disable-curses
make
make install

How can this be fixed?

Thank you!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情魔剑神 2025-01-30 23:36:37

我能够使用Android NDK(R15C)的旧版本来编译该库。基于

export TARGET=aarch64-linux-android
export HOST=aarch64-eabi
export ARCH=arm64
export TOOLCHAIN=${TARGET}
export NDK_TOOLCHAIN=${DEV}/android-ndk-toolchain-${ARCH}-r15c

I was able to compile this library using an old version of the Android NDK (r15c). Based on the compilation of Wireshark 3.4.0. Changed only the following environment variables:

export TARGET=aarch64-linux-android
export HOST=aarch64-eabi
export ARCH=arm64
export TOOLCHAIN=${TARGET}
export NDK_TOOLCHAIN=${DEV}/android-ndk-toolchain-${ARCH}-r15c
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文