4

liblog.soi386 コントローラーで実行される動的ライブラリー ( ) を実装しようとしています。

それをコンパイルすると、ファイルが正常 Host Machine (Ubuntu Machine)にコンパイルおよび生成されます。ターゲットマシンに配置されるファイルです。.soliblog.so/usr/lib

merom@arunkumar:~/freedcs/freedcs-code1/Controller/src/Controller$ ldd log_client
    linux-gate.so.1 =>  (0xb7707000)
    libnative.so.3 => not found
    libxenomai.so.0 => not found
    libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb76cd000)
    librt.so.0 => not found
    liblog.so => /usr/lib/liblog.so (0xb76c9000)
    libcrypto.so.1.0.0 => /lib/i386-linux-gnu/libcrypto.so.1.0.0 (0xb751e000)
    libssl.so.1.0.0 => /lib/i386-linux-gnu/libssl.so.1.0.0 (0xb74c7000)
    libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb74a9000)
    libc.so.0 => not found
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb72f5000)
    /lib/ld-uClibc.so.0 => /lib/ld-linux.so.2 (0xb7708000)
    libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb72f0000)
    libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb72d7000)
merom@arunkumar:~/freedcs/freedcs-code1/Controller/src/Controller$ 

ホストマシンで出力。

ターゲット マシンでの出力:

libnative.so.3 => /usr/lib/libnative.so.3 (0xb78d9000)
libxenomai.so.0 => /usr/lib/libxenomai.so.0 (0xb78d4000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb78c1000)
librt.so.0 => /lib/librt.so.0 (0xb78bd000)
liblog.so => /lib/liblog.so (0xb78b9000)
libcrypto.so.1.0.0 => /usr/lib/libcrypto.so.1.0.0 (0xb7793000)
libssl.so.1.0.0 => /usr/lib/libssl.so.1.0.0 (0xb7752000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7748000)
libc.so.0 => /lib/libc.so.0 (0xb770a000)
libdl.so.0 => /lib/libdl.so.0 (0xb7706000)
libc.so.6 => not found
ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0xb78e2000)

ターゲット マシン (現在は VMware) に送信すると、実行すると [ はい].\log_clientと表示されます。can't load library 'libc.so.6'log_clientliblog.so

コンパイル コマンド

生成中liblog.so

../../../../build/i386/buildroot-2011.11/output/host/usr/bin/i686-unknown-linux-uclibc-gcc -c log.c -o liblog.o

../../../../build/i386/buildroot-2011.11/output/host/usr/bin/i686-unknown-linux-uclibc-gcc -Wcast-align -g -W -Wall -L../../../../build/i386/buildroot-2011.11/output/target/usr/lib -lxenomai -lpthread -lrt -shared -o liblog.so liblog.o -rdynamic -lcrypto -lssl

生成中log_client

cp liblog.so ../../../../build/i386/buildroot-2011.11/output/target/usr/lib

../../../../build/i386/buildroot-2011.11/output/host/usr/bin/i686-unknown-linux-uclibc-gcc -Wcast-align -g -W -Wall -c log_client.c

../../../../build/i386/buildroot-2011.11/output/host/usr/bin/i686-unknown-linux-uclibc-gcc -Wcast-align -g -W -Wall -L../../../../build/i386/buildroot-2011.11/output/target/usr/lib -lxenomai -lpthread -lrt -o log_client log_client.o -llog -rdynamic -lcrypto -lssl

動作している他のコードに同じ手順を使用していますが、そのコードはこのカスタマイズされたライブラリ ( liblog.so) を使用していませんが、警告もありましたが、ここには投稿しませんでした。私を助けてください、私はイライラしています!!

------------編集----------

file出力

$ file liblog.so 
liblog.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped

$ file log_client 
log_client: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), not stripped

------------更新----------

--sysrootファイルのコンパイル中に使用するよう提案された人もいましたが、それでも役に立ちませんでした。同じエラーが出ます。:(

ターゲット マシンの GCC のsysrootsysrootパスへのパスを入力しました

生成中liblog.so

../../../../build/i386/buildroot-2011.11/output/host/usr/bin/i686-unknown-linux-uclibc-gcc -Wcast-align -g -W -Wall -c log.c -o liblog.o --sysroot=/home/merom/freedcs/build/i386/buildroot-2011.11/output/host/usr/i686-unknown-linux-uclibc/sysroot/

../../../../build/i386/buildroot-2011.11/output/host/usr/bin/i686-unknown-linux-uclibc-gcc -Wcast-align -g -W -Wall -L../../../../build/i386/buildroot-2011.11/output/target/usr/lib -lxenomai -lpthread -lrt -shared -o liblog.so liblog.o -rdynamic -lcrypto -lssl --sysroot=/home/merom/freedcs/build/i386/buildroot-2011.11/output/host/usr/i686-unknown-linux-uclibc/sysroot/

生成中log_client

cp liblog.so ../../../../build/i386/buildroot-2011.11/output/target/usr/lib

../../../../build/i386/buildroot-2011.11/output/host/usr/bin/i686-unknown-linux-uclibc-gcc -Wcast-align -g -W -Wall -c log_client.c --sysroot=/home/merom/freedcs/build/i386/buildroot-2011.11/output/host/usr/i686-unknown-linux-uclibc/sysroot/

../../../../build/i386/buildroot-2011.11/output/host/usr/bin/i686-unknown-linux-uclibc-gcc -Wcast-align -g -W -Wall -L../../../../build/i386/buildroot-2011.11/output/target/usr/lib -lxenomai -lpthread -lrt -o log_client log_client.o -llog -rdynamic -lcrypto -lssl --sysroot=/home/merom/freedcs/build/i386/buildroot-2011.11/output/host/usr/i686-unknown-linux-uclibc/sysroot/

アップデート

objdump の実行後 これが出力です。

objdump -x log_client | grep NEEDED
NEEDED               libnative.so.3
NEEDED               libxenomai.so.0
NEEDED               libpthread.so.0
NEEDED               librt.so.0
NEEDED               liblog.so
NEEDED               libcrypto.so.1.0.0
NEEDED               libssl.so.1.0.0
NEEDED               libgcc_s.so.1
NEEDED               libc.so.0



objdump -x liblog.so | grep NEEDED
NEEDED               libnative.so.3
NEEDED               libxenomai.so.0
NEEDED               libpthread.so.0
NEEDED               librt.so.0
NEEDED               libcrypto.so.1.0.0
NEEDED               libssl.so.1.0.0
NEEDED               libgcc_s.so.1
NEEDED               libc.so.0
4

1 に答える 1

1

実行可能ファイルにも同じ問題がありました。私が試したすべてのツール (ldd、objdump、readelf、strings) は、.6 ではなく libc.so.0 との依存関係を示しました。その依存ライブラリの 1 つが .6 に依存していることが判明しました。だから私は行ってそれを修正し、今ではすべてが機能しています。

間違ったクロスコンパイラを使用してコンパイルされたため (間違って使用したため)、ライブラリのバージョンが間違っていたため、再コンパイルして再アップロードしました。

于 2015-10-01T10:35:55.167 に答える