5

Tôi đang cố gắng biên dịch một cái gì đó cho Android, vì vậy tôi đang sử dụng một toolchain riêng biệt. Có một thư viện mà các mối liên kết được phàn nàn nó không thể tìm thấy:thư viện xác nhận quyền sở hữu liên kết không tìm thấy, strace cho thấy nó cố gắng truy cập đường dẫn hợp lệ mặc dù

arm-eabi-gcc: fatal error: -fuse-linker-plugin, but liblto_plugin.so not found 

Thư viện chắc chắn tồn tại trong con đường này:

$ ls -l /mnt/hgfs/Documents/thesis/android-wmon/core/os/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/libexec/gcc/arm-eabi/4.6.x-google 
total 70053 
-rwxr-xr-x 1 501 dialout 47040814 Oct 3 14:29 cc1 
-rwxr-xr-x 1 501 dialout 50903764 Oct 3 14:29 cc1plus 
-rwxr-xr-x 1 501 dialout 423914 Oct 3 14:29 collect2 
drwxr-xr-x 1 501 dialout  204 Oct 3 14:29 install-tools 
-rwxr-xr-x 1 501 dialout  1090 Oct 3 14:29 libfunction_reordering_plugin.la 
lrwxr-xr-x 1 501 dialout  38 Oct 3 14:29 libfunction_reordering_plugin.so -> libfunction_reordering_plugin.so.0.0.0 
lrwxr-xr-x 1 501 dialout  38 Oct 3 14:29 libfunction_reordering_plugin.so.0 -> libfunction_reordering_plugin.so.0.0.0 
-rwxr-xr-x 1 501 dialout 89427 Oct 3 14:29 libfunction_reordering_plugin.so.0.0.0 
-rwxr-xr-x 1 501 dialout  994 Oct 3 14:29 liblto_plugin.la 
lrwxr-xr-x 1 501 dialout  22 Oct 3 14:29 liblto_plugin.so -> liblto_plugin.so.0.0.0 
lrwxr-xr-x 1 501 dialout  22 Oct 3 14:29 liblto_plugin.so.0 -> liblto_plugin.so.0.0.0 
-rwxr-xr-x 1 501 dialout 238575 Oct 3 14:29 liblto_plugin.so.0.0.0 
-rwxr-xr-x 1 501 dialout 44647203 Oct 3 14:29 lto1 
-rwxr-xr-x 1 501 dialout 114284 Oct 3 14:29 lto-wrapper 

Vì vậy, trong dòng biên dịch của tôi, tôi bao gồm "-L/mnt/hgfs /Documents/thesis/android-wmon/core/os/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/libexec/gcc/arm-eabi/4.6.x-google "và sau đó chỉ định" -lliblto_plugin " ... nhưng tôi vẫn tiếp tục gặp lỗi này.

Dưới đây là toàn bộ dòng và lỗi của tôi:

arm-eabi-gcc -o test \ 
-I/mnt/hgfs/Documents/thesis/android-wmon/core/os/../android-ndk-r8b-linux/platforms/android-14/arch-arm/usr/include \ 
-I/mnt/hgfs/Documents/thesis/android-wmon/core/os/../ported-deps/jni/libgcrypt/src \ 
-I/mnt/hgfs/Documents/thesis/android-wmon/core/os/../ported-deps/jni/libgpg-error/src \ 
-I/mnt/hgfs/Documents/thesis/android-wmon/core/os/system/core/include \ 
-I/mnt/hgfs/Documents/thesis/android-wmon/core/os/hardware/libhardware/include \ 
-I/mnt/hgfs/Documents/thesis/android-wmon/core/os/hardware/ril/include \ 
-I/mnt/hgfs/Documents/thesis/android-wmon/core/os/dalvik/libnativehelper/include \ 
-I/mnt/hgfs/Documents/thesis/android-wmon/core/os/frameworks/base/include \ 
-I/mnt/hgfs/Documents/thesis/android-wmon/core/os/external/skia/include \ 
-I/mnt/hgfs/Documents/thesis/android-wmon/core/os/out/target/product/generic/obj/include \ 
-I/mnt/hgfs/Documents/thesis/android-wmon/core/os/bionic/libc/arch-arm/include \ 
-I/mnt/hgfs/Documents/thesis/android-wmon/core/os/bionic/libc/include \ 
-I/mnt/hgfs/Documents/thesis/android-wmon/core/os/bionic/libstdc++/include \ 
-I/mnt/hgfs/Documents/thesis/android-wmon/core/os/bionic/libc/kernel/common \ 
-I/mnt/hgfs/Documents/thesis/android-wmon/core/os/bionic/libc/kernel/arch-arm \ 
-I/mnt/hgfs/Documents/thesis/android-wmon/core/os/bionic/libm/include \ 
-I/mnt/hgfs/Documents/thesis/android-wmon/core/os/bionic/libm/include/arch/arm \ 
-I/mnt/hgfs/Documents/thesis/android-wmon/core/os/bionic/libthread_db/include \ 
-I/mnt/hgfs/Documents/thesis/android-wmon/core/os/bionic/libm/arm \ 
-I/mnt/hgfs/Documents/thesis/android-wmon/core/os/bionic/libm \ 
-I/mnt/hgfs/Documents/thesis/android-wmon/core/os/out/target/product/generic/obj/SHARED_LIBRARIES/libm_intermediates \ 
-D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -DANDROID -DSK_RELEASE -DNDEBUG \ 
-include /mnt/hgfs/Documents/thesis/android-wmon/core/os/system/core/include/arch/linux-arm/AndroidConfig.h \ 
-UDEBUG -march=armv5te -mtune=xscale -msoft-float -mthumb-interwork \ 
-fpic -fno-exceptions -ffunction-sections -funwind-tables -fstack-protector -fmessage-length=0 \ 
test.c \ 
-Bdynamic -Wl,-T,/mnt/hgfs/Documents/thesis/android-wmon/core/os/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/arm-eabi/lib/ldscripts/armelf.x \ 
-Wl,-dynamic-linker,/system/bin/linker -Wl,--gc-sections -Wl,-z,nocopyreloc \ 
-Wl,--no-undefined -Wl,-rpath-link=/mnt/hgfs/Documents/thesis/android-wmon/core/os/../android-ndk-r8b-linux/platforms/android-14/arch-arm/usr/lib \ 
-L/mnt/hgfs/Documents/thesis/android-wmon/core/os/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/libexec/gcc/arm-eabi/4.6.x-google \ 
-L/mnt/hgfs/Documents/thesis/android-wmon/core/os/../android-ndk-r8b-linux/platforms/android-14/arch-arm/usr/lib \ 
-nostdlib /mnt/hgfs/Documents/thesis/android-wmon/core/os/../android-ndk-r8b-linux/platforms/android-14/arch-arm/usr/lib/crtend_android.o \ 
/mnt/hgfs/Documents/thesis/android-wmon/core/os/../android-ndk-r8b-linux/platforms/android-14/arch-arm/usr/lib/crtbegin_dynamic.o \ 
/mnt/hgfs/Documents/thesis/android-wmon/core/os/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/lib/gcc/arm-eabi/4.6.x-google/libgcc.a \ 
-lc -lliblto_plugin -lm 
arm-eabi-gcc: fatal error: -fuse-linker-plugin, but liblto_plugin.so not found 

EDIT: Chạy strace cùng với các biên dịch, tôi thấy truy cập để đọc các thư viện chia sẻ mà không:

access("/mnt/hgfs/Documents/thesis/android-wmon/core/os/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/../libexec/gcc/arm-eabi/4.6.x-google/liblto_plugin.so", R_OK) = -1 ENOENT (No such file or directory) 
access("/mnt/hgfs/Documents/thesis/android-wmon/core/os/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/../libexec/gcc/liblto_plugin.so", R_OK) = -1 ENOENT (No such file or directory) 
access("/mnt/hgfs/Documents/thesis/android-wmon/core/os/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/../lib/gcc/arm-eabi/4.6.x-google/../../../../arm-eabi/bin/arm-eabi/4.6.x-google/liblto_plugin.so", R_OK) = -1 ENOENT (No such file or directory) 
access("/mnt/hgfs/Documents/thesis/android-wmon/core/os/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/../lib/gcc/arm-eabi/4.6.x-google/../../../../arm-eabi/bin/liblto_plugin.so", R_OK) = -1 ENOENT (No such file or directory) 

Nhưng thật thú vị, con đường đầu tiên mà nó cố gắng thực tế tồn tại, nhưng nó là một liên kết:

$ file /mnt/hgfs/Documents/thesis/android-wmon/core/os/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/../libexec/gcc/arm-eabi/4.6.x-google/liblto_plugin.so 
/mnt/hgfs/Documents/thesis/android-wmon/core/os/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/../libexec/gcc/arm-eabi/4.6.x-google/liblto_plugin.so: symbolic link to `liblto_plugin.so.0.0.0' 

liên kết đó cũng là hợp lệ:

$ ls -l /mnt/hgfs/Documents/thesis/android-wmon/core/os/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/../libexec/gcc/arm-eabi/4.6.x-google/ 
total 70053 
-rwxr-xr-x 1 501 dialout 47040814 Oct 3 14:29 cc1 
-rwxr-xr-x 1 501 dialout 50903764 Oct 3 14:29 cc1plus 
-rwxr-xr-x 1 501 dialout 423914 Oct 3 14:29 collect2 
drwxr-xr-x 1 501 dialout  204 Oct 3 14:29 install-tools 
-rwxr-xr-x 1 501 dialout  1090 Oct 3 14:29 libfunction_reordering_plugin.la 
lrwxr-xr-x 1 501 dialout  38 Oct 3 14:29 libfunction_reordering_plugin.so -> libfunction_reordering_plugin.so.0.0.0 
lrwxr-xr-x 1 501 dialout  38 Oct 3 14:29 libfunction_reordering_plugin.so.0 -> libfunction_reordering_plugin.so.0.0.0 
-rwxr-xr-x 1 501 dialout 89427 Oct 3 14:29 libfunction_reordering_plugin.so.0.0.0 
-rwxr-xr-x 1 501 dialout  994 Oct 3 14:29 liblto_plugin.la 
lrwxr-xr-x 1 501 dialout  22 Oct 3 14:29 liblto_plugin.so -> liblto_plugin.so.0.0.0 
lrwxr-xr-x 1 501 dialout  22 Oct 3 14:29 liblto_plugin.so.0 -> liblto_plugin.so.0.0.0 
-rwxr-xr-x 1 501 dialout 238575 Oct 3 14:29 liblto_plugin.so.0.0.0 
-rwxr-xr-x 1 501 dialout 44647203 Oct 3 14:29 lto1 
-rwxr-xr-x 1 501 dialout 114284 Oct 3 14:29 lto-wrapper 

KHÁC EDIT: Nếu tôi đi vào thư mục chứa các thư viện chia sẻ và loại bỏ các liên kết từ liblto_plugin.so để liblto_plugin.so.0.0.0 và sau đó "cp liblto_plugin.so.0.0.0 liblto_plugin.so" sau đó nó liên kết đúng và chương trình biên dịch của tôi. Tại sao nó bị hỏng khi tập tin này là một liên kết? (xin lỗi, bằng cách sử dụng "liên kết" để tham khảo hai điều khác nhau ở đây).

Trả lời

1

Nó chỉ ra đây là một lỗi trong việc sử dụng một thư mục chia sẻ trên HGFS với máy ảo của tôi. Nếu tôi kéo mã ra khỏi một thư mục được chia sẻ và vào hệ thống tệp gốc, tôi không gặp phải các vấn đề về xây dựng này.

Điều này đã được gợi ý cho tôi trên here

+0

Tìm thấy tuyệt vời. Đã có cùng một vấn đề với NDK của Android trên một thư mục được chia sẻ trên máy chủ được sử dụng từ máy ảo. –

Các vấn đề liên quan