[Linux] [コンパイル] libmpc.so.3: cannot open shared object file: そのようなファイルまたはディレクトリはありません
2022-02-09 20:12:24
zlib のクロスコンパイルで libmpc.so.3 が見つからない
root@Nikola:/source/build# make BOARD_TYPE=rt288x PID=PID zlib_build
make CC=mipsel-buildroot-linux-uclibc-gcc AR=mipsel-buildroot-linux-uclibc-ar LD=mipsel-buildroot-linux-uclibc-ld RANLIB=mipsel- buildroot-linux-uclibc-ranlib -C /source/build/...。/... /... /tp-software/develop/open/apps/zlib all
if [ -f zlib-1.2.7/Makefile ]; then \.
make -C zlib-1.2.7 clean; \?
フィ
rm -f *.o *.lo *~ \.
example minigzip examplesh minigzipsh \...
example64 minigzip64 \
infcover \ \
libz.* foo.gz so_locations \.
_match.s maketree contrib/infback9/*.o
rm -rf objs
rm -f *.gcda *.gcno *.gcov
rm -f contrib/infback9/*.gcda contrib/infback9/*.gcno contrib/infback9/*.gcov
cd zlib-1.2.7 && . /configure --static
mipsel-buildroot-linux-uclibc-gcc でスタティックライブラリ libz.a バージョン 1.2.7 をビルドしています。
off64_tをチェック中...。いいえ。
fseekoをチェックする... ありません。
ストレラーのチェック中... いいえ
unistd.hのチェック中... いいえ。
stdarg.hのチェック中... いいえ。
vs[n]printf()とs[n]printf()のどちらを使用するか確認中... s[n]printf()を使用します。
stdio.hのsnprintf()をチェックする... ありません。
警告: snprintf() が見つからないため、sprintf() にフォールバックします。
ビルドは可能ですが、バッファオーバーフローのセキュリティの可能性があります。
sprintf()の戻り値をチェックする... いいえ。
警告:どうやら sprintf() は値を返さないようです zlib
ビルドは可能ですが、文字列フォーマットのセキュリティの可能性があります。
の脆弱性があります。
4バイト整数型を探しています... 見つかりません。
make -C zlib-1.2.7
mipsel-buildroot-linux-uclibc-gcc -O -DNO_FSEEKO -DNO_STRERROR -DNO_snprintf -DHAS_sprintf_void -I. -c -o example.o test/example.c
/source/toolchain/buildroot-gcc463/usr/bin/... /libexec/gcc/mipsel-buildroot-linux-uclibc/4.6.3/cc1: 共有ライブラリのロード中にエラーが発生しました: libmpc.so.3: 共有オブジェクトファイルを開くことができません。そのようなファイルやディレクトリはありません
ファイルチェックに失敗したのを見て、ヘッダーファイルのルックアップに失敗したのかと思い、zlibディレクトリにあるconfigureのこのコードを見てみました。
# ラージファイルのサポートをチェックし、なければ fseeko() をチェックする。
cat > $test.c <<EOF
#include <sys/types.h>
off64_t dummy = 0;
EOF
if try $CC -c $CFLAGS -D_LARGEFILE64_SOURCE=1 $test.c; then
CFLAGS="${CFLAGS}。-D_LARGEFILE64_SOURCE=1"です。
SFLAGS="${SFLAGS}を指定します。-D_LARGEFILE64_SOURCE=1"です。
ALL="${ALL} all64"
TEST="${TEST} test64"
echo "off64_tのチェック中... Yes." | tee -a configure.log
echo "fseekoをチェック中... Yes." | tee -a configure.log
cat $test.c
echo ======================================================
echo "$CC -c $CFLAGS -D_LARGEFILE64_SOURCE=1 $test.c"
echo +++++++
echo "off64_tのチェック中... No." | tee -a configure.log
echo >> configure.log
cat > $test.c <<EOF
一時的にtest.cファイルを生成し、クロスコンパイラツールでコンパイルし、そのコンパイル結果で判断する方法です。test.cファイルを手動でコンパイルしてみると、これも失敗しているので、問題はlibmpc.so.3というファイルが見つからないことであるはずです
mpc ライブラリが既にインストールされているかどうかを確認します (インストールされていない場合、まず apt-cache search libmpc コマンドで該当するパッケージを検索し、apt-get install でインストールします)。
root@Nikola :/usr/lib# dpkg -l | grep mpc
ii libmpc-dev 0.9-4 多倍精度複素浮動小数点ライブラリ開発パッケージ
ii libmpc2 0.9-4 多倍精度複素浮動小数点演算ライブラリ
ii libmpcdec-dev 2:0.1~r459-1ubuntu1 MusePack decoder - 開発用ファイル
ii libmpcdec6 2:0.1~r459-1ubuntu1 MusePack decoder - ライブラリ
root@Nikola :/usr/lib/i386-linux-gnu#.
libmpc2 が既にインストールされていることがわかったので、ライブラリのあるディレクトリを検索します。
root@Nikola :/usr/lib# find . -name "*mpc*" | xargs ls -al
-rw-r--r-- 1 root root 53940 Feb 23 2012 . /gimp/2.0/python/gimpcolor.so
-rw-r--r-- 1 root root 161270 Oct 19 2011 . /i386-linux-gnu/libmpc.a
lrwxrwx 1 root root 15 Oct 19 2011 . /i386-linux-gnu/libmpc.so -> libmpc.so.2.0.0
lrwxrwx 1 root root 15 Dec 19 2014 . /i386-linux-gnu/libmpc.so.2 -> libmpc.so.2.0.0
-rw-r--r-- 1 root root 87972 Oct 19 2011 . /i386-linux-gnu/libmpc.so.2.0.0
libmpc.so.3のファイルが見当たりません。これはリンクファイルのはずなので、作成する必要があります。libmpc.so.2.0.0のあるディレクトリ i386-linux-gnu に移動してリンクファイルを作成します。
root@Nikola :/usr/lib# ln -s libmpc.so.2.0.0 libmpc.so.3
正常に作成され、その後zlibを再コンパイルすると、OK
root@Nikola:/source/build# make BOARD_TYPE=rt288x PID=PID zlib_build
make CC=mipsel-buildroot-linux-uclibc-gcc AR=mipsel-buildroot-linux-uclibc-ar LD=mipsel-buildroot-linux-uclibc-ld RANLIB=mipsel- buildroot-linux-uclibc-ranlib -C /source/build/...。/... /... /tp-software/develop/open/apps/zlib all
if [ -f zlib-1.2.7/Makefile ]; then \.
make -C zlib-1.2.7 clean; \?
フィ
rm -f *.o *.lo *~ \.
example minigzip examplesh minigzipsh \...
example64 minigzip64 \
infcover \ \
libz.* foo.gz so_locations \.
_match.s maketree contrib/infback9/*.o
rm -rf objs
rm -f *.gcda *.gcno *.gcov
rm -f contrib/infback9/*.gcda contrib/infback9/*.gcno contrib/infback9/*.gcov
cd zlib-1.2.7 && . /configure --static
mipsel-buildroot-linux-uclibc-gcc でスタティックライブラリ libz.a バージョン 1.2.7 をビルドしています。
off64_tをチェック中...。いいえ。
fseekoをチェックする... ありません。
ストレラーのチェック中... いいえ
unistd.hのチェック中... いいえ。
stdarg.hのチェック中... いいえ。
vs[n]printf()とs[n]printf()のどちらを使用するか確認中... s[n]printf()を使用します。
stdio.hのsnprintf()をチェックする... ありません。
警告: snprintf() が見つからないため、sprintf() にフォールバックします。
ビルドは可能ですが、バッファオーバーフローのセキュリティの可能性があります。
sprintf()の戻り値をチェックする... いいえ。
警告:どうやら sprintf() は値を返さないようです zlib
ビルドは可能ですが、文字列フォーマットのセキュリティの可能性があります。
の脆弱性があります。
4バイト整数型を探しています... 見つかりません。
make -C zlib-1.2.7
mipsel-buildroot-linux-uclibc-gcc -O -DNO_FSEEKO -DNO_STRERROR -DNO_snprintf -DHAS_sprintf_void -I. -c -o example.o test/example.c
/source/toolchain/buildroot-gcc463/usr/bin/... /libexec/gcc/mipsel-buildroot-linux-uclibc/4.6.3/cc1: 共有ライブラリのロード中にエラーが発生しました: libmpc.so.3: 共有オブジェクトファイルを開くことができません。そのようなファイルやディレクトリはありません
ファイルチェックに失敗したのを見て、ヘッダーファイルのルックアップに失敗したのかと思い、zlibディレクトリにあるconfigureのこのコードを見てみました。
# ラージファイルのサポートをチェックし、なければ fseeko() をチェックする。
cat > $test.c <<EOF
#include <sys/types.h>
off64_t dummy = 0;
EOF
if try $CC -c $CFLAGS -D_LARGEFILE64_SOURCE=1 $test.c; then
CFLAGS="${CFLAGS}。-D_LARGEFILE64_SOURCE=1"です。
SFLAGS="${SFLAGS}を指定します。-D_LARGEFILE64_SOURCE=1"です。
ALL="${ALL} all64"
TEST="${TEST} test64"
echo "off64_tのチェック中... Yes." | tee -a configure.log
echo "fseekoをチェック中... Yes." | tee -a configure.log
cat $test.c
echo ======================================================
echo "$CC -c $CFLAGS -D_LARGEFILE64_SOURCE=1 $test.c"
echo +++++++
echo "off64_tのチェック中... No." | tee -a configure.log
echo >> configure.log
cat > $test.c <<EOF
一時的にtest.cファイルを生成し、クロスコンパイラツールでコンパイルし、そのコンパイル結果で判断する方法です。test.cファイルを手動でコンパイルしてみると、これも失敗しているので、問題はlibmpc.so.3というファイルが見つからないことであるはずです
mpc ライブラリが既にインストールされているかどうかを確認します (インストールされていない場合、まず apt-cache search libmpc コマンドで該当するパッケージを検索し、apt-get install でインストールします)。
root@Nikola :/usr/lib# dpkg -l | grep mpc
ii libmpc-dev 0.9-4 多倍精度複素浮動小数点ライブラリ開発パッケージ
ii libmpc2 0.9-4 多倍精度複素浮動小数点演算ライブラリ
ii libmpcdec-dev 2:0.1~r459-1ubuntu1 MusePack decoder - 開発用ファイル
ii libmpcdec6 2:0.1~r459-1ubuntu1 MusePack decoder - ライブラリ
root@Nikola :/usr/lib/i386-linux-gnu#.
libmpc2 が既にインストールされていることがわかったので、ライブラリのあるディレクトリを検索します。
root@Nikola :/usr/lib# find . -name "*mpc*" | xargs ls -al
-rw-r--r-- 1 root root 53940 Feb 23 2012 . /gimp/2.0/python/gimpcolor.so
-rw-r--r-- 1 root root 161270 Oct 19 2011 . /i386-linux-gnu/libmpc.a
lrwxrwx 1 root root 15 Oct 19 2011 . /i386-linux-gnu/libmpc.so -> libmpc.so.2.0.0
lrwxrwx 1 root root 15 Dec 19 2014 . /i386-linux-gnu/libmpc.so.2 -> libmpc.so.2.0.0
-rw-r--r-- 1 root root 87972 Oct 19 2011 . /i386-linux-gnu/libmpc.so.2.0.0
libmpc.so.3のファイルが見当たりません。これはリンクファイルのはずなので、作成する必要があります。libmpc.so.2.0.0のあるディレクトリ i386-linux-gnu に移動してリンクファイルを作成します。
root@Nikola :/usr/lib# ln -s libmpc.so.2.0.0 libmpc.so.3
正常に作成され、その後zlibを再コンパイルすると、OK
関連
-
スクリプトが ssh を呼び出した後、stdin がターミナルでないため、疑似ターミナルが割り当てられない
-
警告: 組み込み関数 'exit' の非互換な暗黙の宣言
-
Ubuntu next install nginx,make: *** `default'が必要とする `build' をターゲットとするルールがありません。停止します。
-
makefileを参照してください。2: セパレータがありません。
-
mach-mini2440.c:155: error: array type has incomplete element type
-
PackagesNotFoundError: 以下のパッケージは、現在のチャネルから利用できません。
-
Linux "std::bad_allocのインスタンスを投げた後に呼び出されたterminate what(): std::bad_alloc Aborted "
-
Linuxでよくあるパーミッション関連のエラーとその解決法
-
nginx: [emerg] 0.0.0.0:80 への bind() に失敗しました (13: Permission denied)。
-
Ansibleの通常ユーザーsudoがコマンドを実行します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
"collect2: error: ld returned 1 exit status" の解決法
-
undefinedmakefile:n: *** セパレータがありません。
-
Makefile:9: *** セパレータがありません。
-
linuxのインストールファイルでは、configure: error: no acceptable C compiler found in $PATH errorが表示されます。
-
Nvidia グラフィックスカード 初期化に失敗しました NVML Driver/library version mismatch エラー解決法
-
MongoDBインストール+解決エラー。mongod.service の起動に失敗しました:until not found
-
Python easy_install は "ImportError: pkg_resources という名前のモジュールがありません" というエラーが発生しました。
-
[turn] makeが表示される ターゲットが指定されておらず、makefileが見つからない 解決方法
-
Linuxでビジー状態のテキストファイルでプログラムを実行する場合の対処法
-
Linuxでプログラム実行時にTextファイルがビジーになる問題の解決方法です。